本文由广州疯狂软件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楼。