GVKun编程网logo

Spring Boot-Hibernate SessionFactory的句柄(springboot sessionid)

17

如果您对SpringBoot-HibernateSessionFactory的句柄和springbootsessionid感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解SpringBoot-H

如果您对Spring Boot-Hibernate SessionFactory的句柄springboot sessionid感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Spring Boot-Hibernate SessionFactory的句柄的各种细节,并对springboot sessionid进行深入的分析,此外还有关于hibernate +spring sessionfactory 配置、Hibernate HibernateSessionFactory.java、Hibernate 与 Spring 集成时配制 SessionFactory 的指导原则、Hibernate4:获取SessionFactory的方式的实用技巧。

本文目录一览:

Spring Boot-Hibernate SessionFactory的句柄(springboot sessionid)

Spring Boot-Hibernate SessionFactory的句柄(springboot sessionid)

有谁知道如何获取由Spring Boot创建的Hibernate SessionFactory的句柄?

答案1

小编典典

你可以使用以下方法完成此操作:

SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);

其中,entityManagerFactory是一个JPA EntityManagerFactory

package net.andreaskluth.hibernatesample;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;@Componentpublic class SomeService {  private SessionFactory hibernateFactory;  @Autowired  public SomeService(EntityManagerFactory factory) {    if(factory.unwrap(SessionFactory.class) == null){      throw new NullPointerException("factory is not a hibernate factory");    }    this.hibernateFactory = factory.unwrap(SessionFactory.class);  }}

hibernate +spring sessionfactory 配置

hibernate +spring sessionfactory 配置

<bean id="sessionFactory"> 
<property name="dataSource" ref="dataSource"></property> 
<!--<property name="configLocation" value="hibernate.cfg.xml"></property>-->         (3)
<property name="hibernateProperties"> 
<props> 
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> 
<prop key="hibernate.show_sql">true</prop> 
<prop key="hibernate.format_sql">true</prop> 
<prop key="hibernate.hbm2ddl.auto">update</prop> 
<prop key="hibernate.cache.use_second_level_cache">true</prop> 
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> 
</props> 
</property> 
<property name="packagesToScan" value="xxx.xxx" /> 
</bean> 

上面的就是 hibernate 的 sessionfactory 的配置,其中最下面的 </property> 
<property name="packagesToScan" value="xxx.xxx" /> 
就是告诉 hibernate 在 xxx.xxx 这个包下去搜索注释生成数据库表

如果用(3)的配置就需要 hibernate.cfg.xml

Hibernate HibernateSessionFactory.java

Hibernate HibernateSessionFactory.java

使用MyEclipse建立Hibernate时自动产生一个HibernateSessionFactory.java文件,这个文件有必要么

我的代码:

Configuration cfg = new Configuration();
cfg.configure();
ServiceRegistry  serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry(); 
SessionFactory  sessionFactory = cfg.buildSessionFactory(serviceRegistry);
Session session = sessionFactory.getCurrentSession();


Hibernate 与 Spring 集成时配制 SessionFactory 的指导原则

Hibernate 与 Spring 集成时配制 SessionFactory 的指导原则

Hibernate 与 Spring 集成时配制 SessionFactory 的指导原则

Hibernate4:获取SessionFactory的方式

Hibernate4:获取SessionFactory的方式

这些年一直都在做Mybatis的开发,几乎都忘记了Hibernate的开发,现在重新学习一下,下载最新的Hibernate 正式版Hibernate.4.2.2.Final。

如果你是用maven的话就是

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>         
    <version>4.2.2.Final</version>        
</dependency>

发现Hibernate4已经将configuration的buildSessionFactory方法已经划线了,说明已经过时了。

后来参看hibernate源码。以及API帮助文档,发现Hibernate4新增了一个接口ServiceRegistry,

所有基于Hibernate的配置或者服务都必须统一向这个ServiceRegistry注册后才能生效。

所以不难看出 Hibernate4的配置入口不再是Configuration对象,而是ServiceRegistry对象,Configuration对象将通过ServiceRegistry对象获取配置信息。

使用了Builder模式创建一个ServiceRegistry对象,可以看到源码org.hibernate.service.ServiceRegistryBuilder这个类。

具体获取如下:

     

import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class Test {

    private static Configuration configuration = null;
    private static SessionFactory sessionFactory = null;
    private static ServiceRegistry serviceRegistry = null;
    public static void main(String[] args) {
        try {
            configuration = new Configuration().configure();
            serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
            sessionFactory = configuration.buildSessionFactory(serviceRegistry);
        } catch (HibernateException e) {
            e.printStackTrace();
        }
    }

}


我们今天的关于Spring Boot-Hibernate SessionFactory的句柄springboot sessionid的分享就到这里,谢谢您的阅读,如果想了解更多关于hibernate +spring sessionfactory 配置、Hibernate HibernateSessionFactory.java、Hibernate 与 Spring 集成时配制 SessionFactory 的指导原则、Hibernate4:获取SessionFactory的方式的相关信息,可以在本站进行搜索。

本文标签: