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楼。

Hibernate简易BaseDao演示单例,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。