我正在使用Spring Tool Suite创建一个使用Hibernate的Spring Boot应用程序。
这是我的application.properties文件:
spring.datasource.url=jdbc:mysql:someurl
spring.datasource.username=somename
spring.datasource.password=somepassword
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=create
spring.jpa.database-platform=org.hibernate.dialect.SQLServerDialect
spring.jpa.show-sql=true
我正在尝试运行以下CommandLineRunner:
@Bean
public CommandLineRunner demo(CustomerRepository repository) {
return (args) -> {
Configuration configuration = new Configuration().configure();
ServiceRegistryBuilder registry = new ServiceRegistryBuilder();
registry.applySettings(configuration.getProperties());
ServiceRegistry serviceRegistry = registry.buildServiceRegistry();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session session = sessionFactory.openSession();
Transaction t = session.beginTransaction();
Customer e1 = new Customer();
//blah blah blah
session.persist(e1);
t.commit();
session.close();
};
}
我的问题是:
Configuration configuration = new Configuration().configure();
查找“hibernate.cfg.xml”,我的所有hibernate配置都在application.properties中
如何让Hibernate配置文件用application.properties中的东西初始化自己?
答案 0 :(得分:1)
如果使用spring boot,配置会自动加载应用程序属性。只有在需要其他配置或以编程方式修改现有配置时才需要配置。
我想,你不需要它们中的任何一个,也就是说,你总是可以使用它而不是设置配置来获得sessionfactory:
@Autowired
private EntityManagerFactory entityManagerFactory;
@Bean
public SessionFactory getSessionFactory() {
if (entityManagerFactory.unwrap(SessionFactory.class) == null) {
throw new NullPointerException("Not a hibernate factory exception");
}
return entityManagerFactory.unwrap(SessionFactory.class);
}
通过这种方式,您的配置会自动加载,并且您可以获得sessionfactory。
希望这有帮助。