package util;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import entity.UserInfo;
public class HibernateUtil
{
private static SessionFactory sessionFactory;
/**
* @return 获取会话工厂
*/
public static SessionFactory getSessionFactory()
{
//第一步:读取Hibernate的配置文件 hibernamte.cfg.xml文件
Configuration con=new Configuration().configure();
//第二步:创建服务注册构建器对象,通过配置对象中加载所有的配置信息
ServiceRegistryBuilder regbulider=new ServiceRegistryBuilder().applySettings(con.getProperties());
//创建注册服务
ServiceRegistry reg=regbulider.buildServiceRegistry();
//第三步:创建会话工厂
SessionFactory sessionFactory=con.buildSessionFactory(reg);
return sessionFactory;
}
/**
* @return 获取会话对象
*/
public static Session getSession()
{
return getSessionFactory().openSession();
}
/**
* @param obj 添加数据
* @return
*/
public static boolean add(Object obj)
{
Session session=null;
Transaction tran=null;
boolean result=false;
try
{
session=getSession();
tran=session.beginTransaction();
session.save(obj);
tran.commit();
result=true;
}
catch (Exception e)
{
if(tran!=null)
{
//事物回滚
tran.rollback();
}
}
finally
{
if(session!=null)
{
//关闭session
session.close();
}
}
return result;
}
/**
* @return 更新数据
* 参数为修改的主键id对象
*/
public static boolean update(Object object)
{
Session session=null;
Transaction tran=null;
boolean result=false;
try
{
session=getSession();
tran=session.beginTransaction();
session.update(object);
tran.commit();
result=true;
}
catch (Exception e)
{
if(tran!=null)
{
//事物回滚
tran.rollback();
}
}
finally
{
if(session!=null)
{
//关闭session
session.close();
}
}
return result;
}
/**
* @param c
* @param obj 查询一条数据根据主键的id号
* @return
*/
public static Object get(Class c,int obj)
{
Session session=null;
Object object=null;
try
{
session=getSession();
object=session.get(c,obj);
}
catch (Exception e)
{
}
finally
{
if(session!=null)
{
//关闭session
session.close();
}
}
return object;
}
/**
* @param obj
* @return 删除数据
*/
public static boolean delete(Object obj)
{
Session session=null;
Transaction tran=null;
boolean result=false;
try
{
session=getSession();
tran=session.beginTransaction();
session.delete(obj);
tran.commit();
result=true;
}
catch (Exception e)
{
if(tran!=null)
{
//事物回滚
tran.rollback();
}
}
finally
{
if(session!=null)
{
//关闭session
session.close();
}
}
return result;
}
/**
* @param <T> 查询多条记录
* @param sql sql语句
* @param param 参数数组
* @return
*/
@SuppressWarnings("unchecked")
public static <T> List<T> query(String sql,String[] param)
{
List<T> list=new ArrayList<T>();
Session session=null;
try
{
session=getSession();
Query query=session.createQuery(sql);
if(param!=null)
{
for(int i=0;i<param.length;i++)
{
query.setString(i,param[i]);
}
}
list=query.list();
}
catch (Exception e)
{
}
finally
{
if(session!=null)
{
session.close();
}
}
return list;
}
/**
* @param sql
* @param param 查询单条记录
* @return
*/
public static Object queryOne(String sql,String[] param)
{
Object object=null;
Session session=null;
try
{
session=getSession();
Query query=session.createQuery(sql);
if(param!=null)
{
for(int i=0;i<param.length;i++)
{
query.setString(0,param[i]);
}
object=query.uniqueResult();
}
}
catch (Exception e)
{
}
finally
{
if(session!=null)
{
session.close();
}
}
return object;
}
/**
* @param <T>
* @param sql
* @param param
* @param page
* @param size
* @return 实现分页查询
*/
@SuppressWarnings("unchecked")
public static <T> List<T> queryByPage(String sql,String[] param,int page,int size)
{
List<T> list=new ArrayList<T>();
Session session=null;
try
{
session=getSession();
Query query=session.createQuery(sql);
if(param!=null)
{
for(int i=0;i<param.length;i++)
{
query.setString(i,param[i]);
}
}
//筛选条数
query.setFirstResult((page-1)*size);
query.setMaxResults(size);
list=query.list();
}
catch (Exception e)
{
}
finally
{
if(session!=null)
{
session.close();
}
}
return list;
}
/**
* @param hql
* @param pras
* @return返回数据个数
*/
public static int getCount(String hql, String[] pras) {
int resu = 0;
Session s = null;
try {
s = getSession();
Query q = s.createQuery(hql);
if (pras != null) {
for (int i = 0; i < pras.length; i++) {
q.setString(i, pras[i]);
}
}
resu = Integer.valueOf(q.iterate().next().toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (s != null)
s.close();
}
return resu;
}
}
详细解决方案
Hibernate打包好了的工具类
热度:175 发布时间:2012-11-03 10:57:44.0
相关解决方案
- hibernate 存入数据库当前时间
- hibernate DAO中加了局物,未提交
- hibernate 字段lazy 的兑现原理
- Hibernate 的query.list()的有关问题
- Hibernate 关联表字段赋值有关问题
- hibernate 联接mysql出错
- struts2 hibernate 分页有关问题
- hibernate与此同时使用多数据源?spring+hibernate
- hibernate 保留对象时,根据映射文件,无法获取主键值
- hibernate 多对1关联配置有关问题
- hibernate 一对1 ,插入不进去数据
- struts+spring+hibernate 开发,在action层调用service层接口,结果替null 注入失败,需高手帮忙
- SSH框架导入struts,hibernate,spring分先后顺序吗>>解决方法
- 请教小弟我不使用Myeclipse,可以在tomcat里面整合Spring,Hibernate,Struts2吗
- Hibernate 保存数据有关问题本人初学者
- hibernate 用hql怎么实现子查询
- struts hibernate,该如何处理
- hibernate hql "=:"符号?解决思路
- null id in com.bsw.gms.hibernate.pojo.Score entry (don't flush the Session after an exception occurs,该怎么解决
- Hibernate flush机制的了解
- 求 Hibernate 3.32 API 汉语言文档
- 求1 struts 2+hibernate+spring整合好的项目
- ,Struts2+Hibernate+Spring做一个网站
- hibernate Save 指定值为函数有关问题(ORACEL库)
- hibernate Query.createQuery(queryString).list();查询最大只有1000条数据,该怎么处理
- hibernate 联合主键自增有关问题
- 哪位高手能推荐下开源的购物网站源码(struts+hibernate+spring)
- Spring+Struct2+Hibernate 集成有关问题
- Hibernate 缓存配置无效,该怎么解决
- hibernate fectch = FetchType.LAZY 如何理解