首先项目中已经使用JPA的方式连接,然后加入hibernate依赖:
<properties> <java.version>1.8</java.version> <hibernate.version>5.0.12.Final</hibernate.version> </properties>
<!-- SpringBoot使用Hibernate的SessionFactory -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
然后有以下几种方式,选择一种合适自己的。
方法一:
增加配置文件HibernateConfig.java:
package com.testSSH.config;
import javax.persistence.EntityManagerFactory;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class HibernateConfig {
@Bean
public SessionFactory sessionFactory(@Qualifier("entityManagerFactory") EntityManagerFactory emf){
return emf.unwrap(SessionFactory.class);
}
}
如果要使用@Transactional则需要在application.properties中加上:
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
方法二:(推荐)
在SpringBoot的启动类中加上:
@Bean
public SessionFactory sessionFactory(HibernateEntityManagerFactory hemf) {
return hemf.getSessionFactory();
}
如果要使用@Transactional则需要在application.properties中加上:
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
方法三:
在SpringBoot的启动类中加上:
@Bean
public HibernateJpaSessionFactoryBean sessionFactory() {
return new HibernateJpaSessionFactoryBean();
}
如果要使用@Transactional则需要在application.properties中加上:
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
使用方法:
@Autowired private SessionFactory sessionFactory;