Posted on 2018-01-16 11:57
魔のkyo 阅读(427)
评论(0) 编辑 收藏 引用 所属分类:
JAVA
按照之前Struts + Spring + Hibernate的项目经验,可以通过Hibernate的sessionFactory创建SQL,而sessionFactory可以从applicationContext通过getBean得到,因为sessionFactory肯定声明在了applicationContext.xml中。
在Spring Boot构建的项目中没有applicationContext.xml所以需要别的方法,我的思路还是想办法找到sessionFactory,方法如下:
先创建这样一个文件
package com.jm.ims.config;
import javax.persistence.EntityManagerFactory;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.vendor.HibernateJpaSessionFactoryBean;
@Configuration
@EnableAutoConfiguration
@EnableJpaAuditing
@EnableJpaRepositories
public class HibernateConfig {
@Bean
public HibernateJpaSessionFactoryBean sessionFactory(EntityManagerFactory emf) {
HibernateJpaSessionFactoryBean fact = new HibernateJpaSessionFactoryBean();
fact.setEntityManagerFactory(emf);
return fact;
}
}
在其他地方就可以直接使用
@Autowired
private SessionFactory sessionFactory;
得到sessionFactory
上面的代码在我的项目里可以正常工作,但是后来发现更简单的方法是直接使用
@PersistenceContext
private EntityManager entityManager;
得到entityManager后就可以createNativeQuery和createQuery