zoukankan      html  css  js  c++  java
  • Hibernate简易BaseDao演示单例

          本文由广州疯狂软件java培训分享:

      Hibernate简易BaseDao演示单例模式和线程池

      Hibernate简易BaseDao演示单例模式和线程池

      package com.dao;

      import java.util.List;

      import org.hibernate.HibernateException;

      import org.hibernate.Session;

      import org.hibernate.SessionFactory;

      import org.hibernate.Transaction;

      import org.hibernate.cfg.Configuration;

      import com.IConst.IConst;

      public class BaseDao { private static Configuration cf;

      private static SessionFactory sf;

      /* 实例化线程池 */ private ThreadLocal thread = new ThreadLocal();

      static { init();

      } /* * 单例模式 * */

      private static synchronized void init()

      { try { if (null == cf || null == sf)

      { cf = new Configuration()。configure();

      sf = cf.buildSessionFactory();

      } } catch (HibernateException e)

      { e.printStackTrace();

      } } /* * open方法

      * */ private void open() throws Exception {

      /* 先从线程池中取 */ Session session = thread.get();

      /* 取不到,利用工厂新建 */ if (null == session)

      { session = sf.openSession();

      /* 将新建的session放入线程池 */ thread.set(session);

      } } /* *

      close方法 * */ private void close()

      { try { /* 从线程池中取 */ Session session = thread.get();

      /* 取到,关闭 */ if (null != session) { session.close();

      /* 清空线程池 */ thread.set(null);

      } } catch (HibernateException e)

      { e.printStackTrace();

      } } /* * 执行增删改 * */ public boolean update(Object obj, int type)

      { Session session = null;

      Transaction tran = null;

      try { open();

      /* 取出session */ session = thread.get();

      /* 打开事务 */ tran = session.beginTransaction();

      switch (type) { case IConst.DELETE: session.delete(obj);

      break; case IConst.INSERT: session.save(obj);

      break; case IConst.UPDATE: session.update(obj);

      break; }

      /* Hibernate的事务机制是先将其保存在缓存中

      */ /* 只有commit以后,才将事务提交 */ /* 提交事务

      */ tran.commit();

      return true;

      } catch (Exception e)

      { if (null != tran) { tran.rollback();

      } e.printStackTrace();

      } finally { close(); } return false;

      } /* * 查询方法 * */ public List select(String sql) { Session session = null;

      try { open();

      session = thread.get();

      return session.createQuery(sql)。list();

      } catch (Exception e)

      { e.printStackTrace();

      } finally { close();

      } return null;

      }}

      疯狂软件教育中心依托开发团队的强大技术实力,把企业最新技术融入实训课程,打造金牌的品质,才能给予学员黄金的未来,疯狂软件凭借过硬的技术实力与丰富的项目开发经验,赢得了社会的肯定。疯狂软件Java培训师资力量强大,课程内容深入,为学员高薪就业做了很好的铺垫,拥有丰富就业指导经验的就业团队也成为了学员高薪就业的先天优势。地址:广州天河区车陂沣宏大厦3楼。

  • 相关阅读:
    真的要努力了
    实事求是
    要努力了
    新征程,新目标
    真的要放弃了吗
    集中力量 主攻文科
    May the force be with me.
    记录级排名
    Android开发过程中git、repo、adb、grep等指令的使用
    Ubuntu环境变量设置
  • 原文地址:https://www.cnblogs.com/gojava/p/3615518.html
Copyright © 2011-2022 走看看