首先项目中已经使用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;