posts - 174, comments - 59, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
按照之前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
只有注册用户登录后才能发表评论。