13.1 hibernate下载及HibernateInitialize类

原创 2016年08月31日 10:57:08

版本:下载较新的4.3.5版本,
下载地址:http://download.csdn.net/detail/solio5/7640023
下载的压缩文件,把解压缩的lib文件夹放到某个地方。
在eclipse中创建叫My_Hibernate的library,它需要添加很多jar包,此时添加的是hibernate/lib/required下的多个jar文件。以后用此library即可。

问1:hibernate的版本与代码啥关系?
答:比如在获取sessionFactory时,不同的版本代码不一样。
如果某版本的代码不对应对应的版本,会出现错误比如:
java.lang.NoClassDefFoundError:
Could not initialize class com.mr.hibernate.HibernateInitialize

比如对于HibernateInitialize类,里面两处求sessionFactory就是不同版本对应不同代码。

//  HibernateInitialize.java
package com.mr.hibernate;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
/**
 * Hibernate初始化类
 *
 */
public class HibernateInitialize {
    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();//ThreadLocal对象
    private static SessionFactory sessionFactory = null;
    //静态块
    static {
        try {
            /*  原来书本版本的
            // 加载Hibernate配置文件
            Configuration cfg = new Configuration().configure();
            sessionFactory = cfg.buildSessionFactory();
            */
            // 网上对应4.3.5版本的
            Configuration configuration = new Configuration().configure();
            StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().
            applySettings(configuration.getProperties());
            sessionFactory = configuration.buildSessionFactory(builder.build());

        } catch (Exception e) {
            System.err.println("创建会话工厂失败");
            e.printStackTrace();
        }
    }
    /**    
     *  @throws HibernateException
     */
    public static Session getSession() throws HibernateException {
        Session session = (Session) threadLocal.get();
        if (session == null || !session.isOpen()) {
            if (sessionFactory == null) {
                rebuildSessionFactory();
            }
            session = (sessionFactory != null) ? sessionFactory.openSession(): null;
            threadLocal.set(session);
        }

        return session;
    }

    public static void rebuildSessionFactory() {
        try {
            /*  原来书本的
            // 加载Hibernate配置文件
            Configuration cfg = new Configuration().configure();
            sessionFactory = cfg.buildSessionFactory();
            */
            // 网上的
            Configuration configuration = new Configuration().configure();
            StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().
            applySettings(configuration.getProperties());
            sessionFactory = configuration.buildSessionFactory(builder.build());

        } catch (Exception e) {
            System.err.println("创建会话工厂失败");
            e.printStackTrace();
        }
    }
    /** 
     * @return SessionFactory对象
     */
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
    /**     
     *  @throws HibernateException
     */
    public static void closeSession() throws HibernateException {
        Session session = (Session) threadLocal.get();
        threadLocal.set(null);//
        if (session != null) {
            session.close();
        }
    }
}

参见解答:
http://stackoverflow.com/questions/26860762/java-lang-noclassdeffounderror-could-not-initialize-class-xxx-xxx-xxx-hibernate

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Hibernate.initialize(Obj)用法

导读:   在使用hibernate进行持久化时,有时需要动态的改变对象的加载,比如在编辑页面里面lazy=true,而在浏览页面lazy=false,这样可以在需要lazy的地方才进行控制。而配置文...

关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) )

PO 即Persistence Object  VO 即Value Object  PO 和VO 是Hibernate 中两个比较关键的概念。  首先,何谓VO,很简单,VO 就是一个简单的...

opensuse 13.1 firefox 支付宝安全控件安装失败的解决方法

首先在文章的最前边写上opensuse 13.1系统下使用firefox浏览器安装支付宝安全控件的可行方法,避免遇到相同问题的筒子们走弯路: 1. 如果你没有安装支付宝安全控件,进入支付宝首页后将会无...

Android 程式开发:(十三)特殊碎片 —— 13.1 ListFragment

http://tech.ddvip.com/2012-09/1348930516182922.html ListFramgent就是一个包含ListView的Fragment,它可以通过数据源(数组...

PostgreSQL学习篇13.1 统计信息的收集

PgStat子进程是PostgreSQL中专门的统计信息收集器进程。表和索引的行数、块数等统计信息记录在系统表pg_class中,其他的统计信息主要收集在系统表pg_statistic中。 统计信息...

金蝶K3-WISE V13.1加密狗驱动-50用户补丁

金蝶K3 WISE——全面应用、完整协同、敏捷制造 金蝶K3 WISE,中小企业管理系统,融合先进管理模式与业务模型的中小企业ERP,财务管理、人力资源管理、客户关系管理等多项功...

[转]ubuntu 14.04 安装 Quartus II 13.1 过程

原文地址 : http://www.cnblogs.com/tracyone/p/3604090.html 神奇的linux!   第一步去官网注册然后下载对应的linux版本,包括软件和设备文...

DevExpress(13.1-15.2) 破解工具

  • 2017-09-07 10:18
  • 1003KB
  • 下载

文件夹加密Passbox13.1

  • 2015-01-13 14:23
  • 1.26MB
  • 下载

opensuse13.1安装jdk

opensuse13.1安装jdk   参考链接:http://tutorialforlinux.com/2013/12/12/how-to-install-oracle-java-jdk-7-on...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)