Spring Boot 2 + JPA / Hibernate 5 注入 SessionFactory 的正确姿势

pom 中整合 Spring Boot 和 JPA 处:

<parent>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-parentartifactId>
    <version>2.1.1.RELEASEversion>
    <relativePath/> 
parent>
<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-data-jpaartifactId>
dependency>

确定 Hibernate 版本:
通过查看源码,发现 Hibernate 的版本为 5.3.7。
如果@Autowired直接注入SessionFactory的话,会报错:

entityManagerFactory must not be null.

此时注入SessionFactory的正确方法:

@Autowired
private EntityManagerFactory entityManagerFactory;

public Session getSession() {
    return entityManagerFactory.unwrap(SessionFactory.class).openSession();
}

你可能感兴趣的:(后端,Java,Web,Spring,Boot)