Hibernate工具类

来源:互联网 发布:cia安装软件 编辑:程序博客网 时间:2024/06/06 14:23

1.     工具类

package com.bjsxt.utils;

 

import org.hibernate.HibernateException;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

 

/**

 * @ClassName:HibernateUtils

 * @Description:

 * @authormengqx

 * @date 2017831

 */

 

public class HibernateUtils {

       // 创建数据库连接

       private static String Config_File ="hibernate.xml";

       private static Configuration configuration =null;

       private static SessionFactory sessionFactory =null;

       // session类存放在threadLocal ,每一次开session

       // 对象的时候,都将session对象放到(set方法)ThreadLocal

       // 使用的时候,使用get方法取出

       private static ThreadLocal<Session> tl =new ThreadLocal<>();

 

       // 当类一加载的就读取配置文件进行初始化操作

       static {

              try {

                     // 读取配置文件

                     configuration =new Configuration().configure(Config_File);

                     // 创建会话工厂

                     sessionFactory =configuration.buildSessionFactory();

              } catch (HibernateExceptione) {

                     System.out.println("加载失败!");

                     e.printStackTrace();

              }

       }

 

       //     为了防止坏人入侵

       private HibernateUtils(){}

      

       public static Session getSession() {

              // ThreadLocal类中取得session对象

              Session session = tl.get();

              if (session ==null) {

                     if (sessionFactory !=null) {

                            // 创建一个session对象

                            session = sessionFactory.openSession();

                            // session对象存放到ThreadLocal类中

                            tl.set(session);

                            returnsession;

                     }

              }

              return session;

       }

 

       public static void close() {

              // ThreadLocal类中取得Session对象。

              Session session = tl.get();

              // ThreadLocal类赋值为null

              tl.set(null);

              if (session !=null) {

                     session.close();

              }

       }

 

}

 

测试:

/**

     *

     * @Description:测试工具类  

     * @authormengqx

     * @date   2017831

     */

    @Test

    public void getOne() {

       // 获得连接

       Session session2 = HibernateUtils.getSession();

       Stu stu = (Stu) session2.get(Stu.class, 1);

       System.out.println(stu);

       HibernateUtils.close();

    }

   

    /**

     *

     * @Description:   save--添加,添加的时候:setId(null) update:更新

     * @authormengqx

     * @date   2017831

     */

    @Test

    public void saveOrUpdate(){

       Session session2 = HibernateUtils.getSession();

       Stu stu = new Stu();

       stu.setId(66);

       stu.setName("小金牙");

       stu.setPwd("888");

       //  开启事务

       Transaction transaction = session2.beginTransaction();

       try {

           session2.saveOrUpdate(stu);

           transaction.commit();

       } catch (Exception e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

           transaction.rollback();

       }finally{

           HibernateUtils.close();

       }

    }

 

 

原创粉丝点击