本人刚学hibernater 做了个utils类,把自己的缺点暴露在阳光下。。希望高手拍砖。。小弟感激不尽
package com.aptech.jb.epet.util;import java.util.List;import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;/**
* hibernate 帮助类
*
* @author 北大青鸟
*/
public class HibernateUtil { // session 工厂
private static SessionFactory factory = null;
private static Configuration cfg = null;// 读取配置文件
// 本地化线程
private final static ThreadLocal<Session> T_session = new ThreadLocal<Session>(); // 开始加载
static { try {
cfg = new Configuration().configure();
factory = cfg.buildSessionFactory();
} catch (HibernateException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}// 加载 /**
* 获取session对象
*
* @return
*/
private static Session getNewSession() {
Session session = T_session.get();// 获取对象
if (session == null) {
T_session.set(factory.openSession());// 设置值
}
return factory.openSession();
}// 获取对象 /**
* 关闭session对象
*
* @param session
*/
private static void closeSession() { Session session = T_session.get();
if (session != null) {
if (session.isOpen()) {
session.close();
}
}
}// 关闭对象 /*
*
* 开启事物
*/
private static void beginTrant() { T_session.get().beginTransaction();//
}// 开启事物 /**
* 提交事物事物
*/
private static void comitTrant() { T_session.get().getTransaction().commit();// 提交事物
}// 提交事物 /*
* 8 回滚事物
*/
private static void robackTrant() { T_session.get().getTransaction().rollback();
}// 回滚事物 /**
* 添加对象
*
* @param obj
*/
public static void addObj(Object obj) { try { Session session = getNewSession();// 获取 session 对象
beginTrant();// 开始事物
session.save(obj);// 保存对象
comitTrant();// 提交事物
} catch (Exception e) {
e.printStackTrace();
robackTrant();// 回滚
} finally {
closeSession();// 关闭
}
}// public static void addObj(Object obj) /**
* 通过id加载对象
*
* @param clz
* @param id
* @return
*/
public static Object getOneObj(Class clz, int id) { Object obj = null;
try { Session session = getNewSession();// 获取session对象
beginTrant();// 开启事物
obj = session.get(clz, id);// 加载对象
comitTrant();// 提交事物
} catch (Exception e) {
e.printStackTrace();
robackTrant();// 回滚
} finally {
closeSession();
}
return obj;
}// 加载 /**
* 删除对象
*
* @param clz
* @param id
*/
public static void delOneObj(Class clz, int id) { try {
Object obj = null;
Session session = getNewSession();// 获取session对象
beginTrant();// 开启事物
obj = session.get(clz, id);// 加载对象
session.delete(obj);//删除对象
comitTrant();// 提交事物
} catch (Exception e) {
e.printStackTrace();
robackTrant();// 回滚
} finally {
closeSession();
}
}// public static void delOneObj(Class clz,int id)
/**
* 更新对象
* @param obj
*/
public static void updateObje(Object obj){
try { Session session = getNewSession();// 获取 session 对象
beginTrant();// 开始事物
session.update(obj);//更新对像
comitTrant();// 提交事物
} catch (Exception e) {
e.printStackTrace();
robackTrant();// 回滚
} finally {
closeSession();// 关闭
}
}//public static void updateObje(Object obj)
public static List getAllByHQL(String hql,String [] parm){
List list = null;
try { Session session = getNewSession();// 获取 session 对象
beginTrant();// 开始事物
Query query = session.createQuery(hql);//创建查询对象
if(parm!=null){
for(int i=0;i<parm.length;i++){
query.setString(0, parm[i]);
}//for
}//处理参数
list = query.list();//获取列表
comitTrant();// 提交事物
} catch (Exception e) {
e.printStackTrace();
robackTrant();// 回滚
} finally {
closeSession();// 关闭
}
return list;
}//public static List getAllByHQL(String hql,String [] parm)
/**
* 简单分页
* @param hql 分页查询语句
* @param currentPage 当前页码数
* @param endPage 结束页码数
* @param rows 每页显示的行数
* @return
*/
public static List getGroupPage(String hql,int currentPage,int endPage,int rows){
List list = null;
try { Session session = getNewSession();// 获取 session 对象
beginTrant();// 开始事物
Query query = session.createQuery(hql);//创建查询对象
if(endPage-currentPage<1)return null; //当前页小于一页
int currentRow = (currentPage-1)*rows;//当前的行数
int endRow = (endPage-1)*rows;//结束的行数
query.setFirstResult(currentRow); //开始行数
query.setMaxResults(endRow);//结束行数
list = query.list();//获取列表
comitTrant();// 提交事物
} catch (Exception e) {
e.printStackTrace();
robackTrant();// 回滚
} finally {
closeSession();// 关闭
}
return list;
}//public static List getGroupPage
}
package com.aptech.jb.epet.util;import java.util.List;import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;/**
* hibernate 帮助类
*
* @author 北大青鸟
*/
public class HibernateUtil { // session 工厂
private static SessionFactory factory = null;
private static Configuration cfg = null;// 读取配置文件
// 本地化线程
private final static ThreadLocal<Session> T_session = new ThreadLocal<Session>(); // 开始加载
static { try {
cfg = new Configuration().configure();
factory = cfg.buildSessionFactory();
} catch (HibernateException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}// 加载 /**
* 获取session对象
*
* @return
*/
private static Session getNewSession() {
Session session = T_session.get();// 获取对象
if (session == null) {
T_session.set(factory.openSession());// 设置值
}
return factory.openSession();
}// 获取对象 /**
* 关闭session对象
*
* @param session
*/
private static void closeSession() { Session session = T_session.get();
if (session != null) {
if (session.isOpen()) {
session.close();
}
}
}// 关闭对象 /*
*
* 开启事物
*/
private static void beginTrant() { T_session.get().beginTransaction();//
}// 开启事物 /**
* 提交事物事物
*/
private static void comitTrant() { T_session.get().getTransaction().commit();// 提交事物
}// 提交事物 /*
* 8 回滚事物
*/
private static void robackTrant() { T_session.get().getTransaction().rollback();
}// 回滚事物 /**
* 添加对象
*
* @param obj
*/
public static void addObj(Object obj) { try { Session session = getNewSession();// 获取 session 对象
beginTrant();// 开始事物
session.save(obj);// 保存对象
comitTrant();// 提交事物
} catch (Exception e) {
e.printStackTrace();
robackTrant();// 回滚
} finally {
closeSession();// 关闭
}
}// public static void addObj(Object obj) /**
* 通过id加载对象
*
* @param clz
* @param id
* @return
*/
public static Object getOneObj(Class clz, int id) { Object obj = null;
try { Session session = getNewSession();// 获取session对象
beginTrant();// 开启事物
obj = session.get(clz, id);// 加载对象
comitTrant();// 提交事物
} catch (Exception e) {
e.printStackTrace();
robackTrant();// 回滚
} finally {
closeSession();
}
return obj;
}// 加载 /**
* 删除对象
*
* @param clz
* @param id
*/
public static void delOneObj(Class clz, int id) { try {
Object obj = null;
Session session = getNewSession();// 获取session对象
beginTrant();// 开启事物
obj = session.get(clz, id);// 加载对象
session.delete(obj);//删除对象
comitTrant();// 提交事物
} catch (Exception e) {
e.printStackTrace();
robackTrant();// 回滚
} finally {
closeSession();
}
}// public static void delOneObj(Class clz,int id)
/**
* 更新对象
* @param obj
*/
public static void updateObje(Object obj){
try { Session session = getNewSession();// 获取 session 对象
beginTrant();// 开始事物
session.update(obj);//更新对像
comitTrant();// 提交事物
} catch (Exception e) {
e.printStackTrace();
robackTrant();// 回滚
} finally {
closeSession();// 关闭
}
}//public static void updateObje(Object obj)
public static List getAllByHQL(String hql,String [] parm){
List list = null;
try { Session session = getNewSession();// 获取 session 对象
beginTrant();// 开始事物
Query query = session.createQuery(hql);//创建查询对象
if(parm!=null){
for(int i=0;i<parm.length;i++){
query.setString(0, parm[i]);
}//for
}//处理参数
list = query.list();//获取列表
comitTrant();// 提交事物
} catch (Exception e) {
e.printStackTrace();
robackTrant();// 回滚
} finally {
closeSession();// 关闭
}
return list;
}//public static List getAllByHQL(String hql,String [] parm)
/**
* 简单分页
* @param hql 分页查询语句
* @param currentPage 当前页码数
* @param endPage 结束页码数
* @param rows 每页显示的行数
* @return
*/
public static List getGroupPage(String hql,int currentPage,int endPage,int rows){
List list = null;
try { Session session = getNewSession();// 获取 session 对象
beginTrant();// 开始事物
Query query = session.createQuery(hql);//创建查询对象
if(endPage-currentPage<1)return null; //当前页小于一页
int currentRow = (currentPage-1)*rows;//当前的行数
int endRow = (endPage-1)*rows;//结束的行数
query.setFirstResult(currentRow); //开始行数
query.setMaxResults(endRow);//结束行数
list = query.list();//获取列表
comitTrant();// 提交事物
} catch (Exception e) {
e.printStackTrace();
robackTrant();// 回滚
} finally {
closeSession();// 关闭
}
return list;
}//public static List getGroupPage
}
解决方案 »
- maven 问题
- 关于html select标签问题
- <s:form action="XX.action"> 与 <s:form action="XX"> 的区别
- 请问axis+tomcat + eclipse例子中写的java程序为什么没有 main()?
- hibernate 初级问题
- Struts中formbean如何获得jsp页面的值??
- 目前最好的java编辑器是哪一款?
- 用JAVA輸出遍歷根目錄下c:\test 下的所有文件的名稱?
- 急急急,请推荐基本Java开发Web Service的好书!
- 求 权限管理代码 用STRUTS+HIBERNATE做的?
- 大家项目中怎样处理日期和时间?
- 我想把我选择的省份 给传到另一个jsp页面怎么办啊
/**
* hibernate 帮助类
*
* @author 北大青鸟
*/
看见青鸟的就想拍砖,有次面试的时候单位给的结果是:你开的工资比俩青鸟的总和还多,你觉得你能干过他们俩吗?