文档章节

不用spring时,hibernate4跟hibernate3创建sessionFactory方式的

de_c
 de_c
发布于 2016/02/03 15:32
字数 226
阅读 8
收藏 0

先是看一下现在刚刚遇到的,hibernate4的sessionfactory的创建方法,跟hibernate3区别还是挺大的;

package com.ynwi.ssh.daoImpl;  
  
import org.hibernate.HibernateException;  
import org.hibernate.Session;  
import org.hibernate.SessionFactory;  
import org.hibernate.cfg.Configuration;  
import org.hibernate.service.ServiceRegistry;  
import org.hibernate.service.ServiceRegistryBuilder;  
  
public class HibernateSessionFactory {  
  
  //指定对应的配置文件
    private static final String CFG_FILE_LOCATION = "/Hibernate.cfg.xml";  
  
    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();  
  
    private static final Configuration cfg = new Configuration()  
            .configure(CFG_FILE_LOCATION);  
  
    private static ServiceRegistryBuilder builder = new ServiceRegistryBuilder()  
            .applySettings(cfg.getProperties());  
  
    private static ServiceRegistry registry;  
  
    private static SessionFactory sessionFactory;  
  
    public static Session currentSession() throws HibernateException {  
        Session session = threadLocal.get();  
  
        if (session == null || session.isOpen() == false) {  
  
            if (sessionFactory == null) {  
                try {  
                    registry = builder.buildServiceRegistry();  
                    sessionFactory = cfg.buildSessionFactory(registry);  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
  
            session = sessionFactory.openSession();  
            threadLocal.set(session);  
  
        }  
  
        return session;  
    }
  
}

下面再看看hibernate3的:

public class HibernateSessionFactory {       
    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();   
    //如果hibernate.cfg.xml在默认位置可以不指定     
    private static final Configuration cfg = new Configuration() .configure();        
    private static SessionFactory sessionFactory;        
    public static Session currentSession() throws HibernateException {          
        Session session = threadLocal.get();            
        if (session == null || session.isOpen() == false) {                
            if (sessionFactory == null) {                  
                try {                     
                    sessionFactory = cfg.buildSessionFactory();                  
                } catch (Exception e) {                      
                    e.printStackTrace();                  
                }              
             }                
             session = sessionFactory.openSession();              
             threadLocal.set(session);            
         }            
         return session;      
        }

© 著作权归作者所有

共有 人打赏支持
de_c
粉丝 0
博文 4
码字总数 734
作品 0
广州
注意Hibernate4在开发当中的一些改变

注意Hibernate4在开发当中的一些改变 Hibernate4的改动较大只有spring3.1以上版本能够支持,Spring3.1取消了HibernateTemplate,因为Hibernate4的事务管理已经很好了,不用Spring再扩展了。这...

千江
2013/05/24
0
1
注意Hibernate4在开发当中的一些改变

Hibernate4的改动较大只有spring3.1以上版本能够支持,Spring3.1取消了HibernateTemplate,因为Hibernate4的事务管理已经很好了,不用Spring再扩展了。这里简单介绍了hibernate4相对于hiber...

Ida62
2014/03/13
0
0
注意Hibernate4在开发当中的一些改变

Hibernate4的改动较大只有spring3.1以上版本能够支持,Spring3.1取消了HibernateTemplate,因为Hibernate4的事务管理已经很好了,不用Spring再扩展了。这里简单介绍了hibernate4相对于hiber...

山海经
2014/03/22
0
0
hibernate4与spring3的整合,不兼容

双休整合下 整合struts2+spring3.2.1+hibernate4.2.1 结果遇到问题如下问题: java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;at......

苏叶晚晚
2013/03/17
0
0
spring3整合hibernate4出现的问题

Spring3与Hibernate4整合时出现了nested exception is java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider。 Hibernate3的时候,用spring来控制sessionfactory用的可以是o......

挨踢精英
2015/03/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式缓存架构设计

零、 题记 在高并发场景下,需要通过缓存来减少数据库的压力,使得大量的访问进来能够命中缓存,只有少量的需要到数据库层。由于缓存基于内存,可支持的并发量远远大于基于硬盘的数据库。所以...

Ala6
11分钟前
1
0
简单工厂模式

public abstract class Operation { private double numberA = 0; private double numberB = 0; public double getNumberA() { return numberA; } ......

NinjaFrog
13分钟前
0
0
git(一) 基本操作(branch、tag、冲突)

撤销操作 修改最后一次提交 解释:修改上次提交。可以修改内容和提交信息 适用场景: 1) 提交信息写错了; 2) 提交多加了配置文件; 3)提交少加了文件 示例操作: $ git commit -m '提交1'...

开心的哈士奇
16分钟前
0
0
Vue中路由管理器Vue Router使用方式(二)-推荐

一、Vue中使用Vue Router简单方式使用 vue add xxx命令添加插件 使用步骤,本人假设已经安装好了Vue CLI工具,了解更多参考:VSCode 搭建Vue开发环境之Vue CLI 1.创建项目 vue create hello...

tianma3798
28分钟前
0
0
设计模式(十六)[结构模式] 装饰模式(Decorator)

1.什么是装饰模式? 装饰模式又名包装模式。装饰模式以对客户端透明的方式扩展对象功能,是继承关系的一个替代方案。 2.模式的类图 抽象构件(Component)角色:给出一个抽象接口,以规范准备接收...

1527
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部