Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to autowire Hibernate SessionFactory in Spring boot

I've created a spring boot application, and I want to handle the Hibernate SessionFactory, so in my service class, I can just call the Hibernate SessionFactory as following :

@Autowired
private SessionFactory sessionFactory;

I found a similar question in stackoverflow where I have to add the following line in application.properties :

spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext

but I'm getting this error :

Cannot resolve property 'current_session_context_class' in java.lang.String

How can I solve this ?

pom.xml dependencies :

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>
like image 678
Renaud is Not Bill Gates Avatar asked May 10 '17 14:05

Renaud is Not Bill Gates


2 Answers

Since version 2.0, JPA provides easy access to the APIs of the underlying implementations. The EntityManager and the EntityManagerFactory provide an unwrap method which returns the corresponding classes of the JPA implementation.

In the case of Hibernate, these are the Session and the SessionFactory.

SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);
like image 148
Karim M. Fadel Avatar answered Oct 20 '22 01:10

Karim M. Fadel


Try enabling HibernateJpaSessionFactoryBean in your Spring configuration.

@Bean
public HibernateJpaSessionFactoryBean sessionFactory() {
    return new HibernateJpaSessionFactoryBean();
}

Have a look at: https://stackoverflow.com/a/33881946/676731

By Spring configuration I mean a class annotated with @Configuration annotation or @SpringBootApplication (it is implicitly annotated with @Configuration).

like image 32
BartoszMiller Avatar answered Oct 20 '22 01:10

BartoszMiller