SpringBoot 加载 hbm.xml
时间: 2023-08-30 22:06:35 浏览: 218
在 Spring Boot 中,我们可以通过配置 `LocalSessionFactoryBean` Bean 来加载 Hibernate 的配置文件和映射文件。下面是一个示例配置:
```java
@Configuration
@EnableTransactionManagement
public class HibernateConfig {
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan("com.example.demo.entity");
sessionFactory.setHibernateProperties(hibernateProperties());
sessionFactory.setMappingLocations(new ClassPathResource("com/example/demo/entity/User.hbm.xml"));
return sessionFactory;
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
dataSource.setUsername("root");
dataSource.setPassword("password");
return dataSource;
}
private final Properties hibernateProperties() {
Properties hibernateProperties = new Properties();
hibernateProperties.setProperty("hibernate.hbm2ddl.auto", "update");
hibernateProperties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
hibernateProperties.setProperty("hibernate.show_sql", "true");
return hibernateProperties;
}
}
```
在上面的配置中,我们通过 `setMappingLocations` 方法设置了 Hibernate 的映射文件位置。这里我们将 `User.hbm.xml` 文件放在了 `com/example/demo/entity/` 目录下,所以需要设置为 `new ClassPathResource("com/example/demo/entity/User.hbm.xml")`。如果有多个映射文件,可以设置多个 `ClassPathResource` 对象。当然,你也可以使用 `PathMatchingResourcePatternResolver` 来扫描指定目录下的所有映射文件。最后,将 `LocalSessionFactoryBean` Bean 注入到其他需要使用 Hibernate 的 Bean 中即可。
阅读全文