关闭

13.1 hibernate下载及HibernateInitialize类

199人阅读 评论(0) 收藏 举报
分类:

版本:下载较新的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

0
0

猜你在找
【套餐】Hadoop生态系统零基础入门
【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【套餐】深度学习入门视频课程——唐宇迪
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】计算机视觉原理及实战——屈教授
【直播】机器学习之凸优化——马博士
【直播】机器学习&数据挖掘7周实训--韦玮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:38539次
    • 积分:2104
    • 等级:
    • 排名:第18135名
    • 原创:176篇
    • 转载:24篇
    • 译文:0篇
    • 评论:3条
    最新评论