原创文章,转载请注明:Hibernate之工具类HibernateUtil  By Lucio.Yang

1.最简单的工具类,实现SessionFactory的单例共享,session的管理

package com.cc.hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder; public class HibernateUtil {
//创建工厂类,是静态的单例的,只能被赋值一次
private static final SessionFactory sessionFactory=buildSessionFactory();
/** init sessionFactory */
private static SessionFactory buildSessionFactory(){
SessionFactory sessionFactory=null;
try{
//configure函数里面可以写hibernate的配置文件,空则默认为hibernate.cfg.xml
Configuration configuration=new Configuration().configure();
ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory= configuration.buildSessionFactory(serviceRegistry);
}
catch(Throwable te){
System.err.println("init sessionFactory Error:"+te);
te.printStackTrace();
}
return sessionFactory;
}
/** get session */
public static Session getSession(){
//得到session
Session session=sessionFactory.openSession();
return session;
}
}

2.将常见事务方法封装进工具类

添加如下方法:

//删除
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;
}
//更新
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;
}
//增加
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;
}
//执行sql语句,返回单条记录
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;
}
参考:http://blog.csdn.net/hanhan313/article/details/8125924

Hibernate之工具类HibernateUtil的更多相关文章

  1. hibernate工具类HibernateUtil详解

    1.为什么要用hibernateUtil这个类,先看这段代码:     //加载配置文件信息默认为hiberna.cfg.xml,如果不是的话那么就在config()方法里面去解析他      Con ...

  2. 一个简单的Hibernate工具类HibernateUtil

    HibernateUtil package com.wj.app.util; import org.hibernate.Session; import org.hibernate.SessionFac ...

  3. hibernate validator工具类

    一.相关的gradle配置文件 // https://mvnrepository.com/artifact/javax.el/javax.el-api compile group: 'javax.el ...

  4. hibernate框架学习第二天:核心API、工具类、事务、查询、方言、主键生成策略等

    核心API Configuration 描述的是一个封装所有配置信息的对象 1.加载hibernate.properties(非主流,早期) Configuration conf = new Conf ...

  5. Hibernate工具类_抽取重复核心代码

    问题:在Hibernate中每次执行一次操作总是需要加载核心配置文件,获取连接池等等都是重复动作,所以抽取出来 解决: package com.xxx.utils; /** *Hibernate的工具 ...

  6. Hibernate 工具类

    1.HibernateConfigUtil.java(HIbernate配置工具类) import org.hibernate.Session; import org.hibernate.Sessio ...

  7. hibernate工具类

    因为hibernate的代码大部分都是固定的,为了将减少重复的代码的书写,可以将这些代码封装为一个工具类,获取hibernate的session对象. 1.工具类: package pers.zhb. ...

  8. Hibernate框架中的HibernateUtil

    对于刚学习三层框架的人来说.每个配置文件和每个类.以及功能来说都非常新奇,时常就忘记了相关类的功能. 在这里建议编程就是要多加练习,才干熟能生巧. 这里说一下HibernateUtil类,在使用Hib ...

  9. 【SSH三大框架】Hibernate基础第二篇:编写HibernateUtil工具类优化性能

    相对于上一篇中的代码编写HibernateUtil类以提高程序的执行速度 首先,仍然要写一个javabean(User.java): package cn.itcast.hibernate.domai ...

随机推荐

  1. Android 流媒体系列(一)

    Android   设置铃声分析 代码其实没有几行,这里简单记录下学习的过程. Android系统启动时会扫描系统与SD卡中的对媒体文件,分别存入数据库sqlite中,以contentProvider ...

  2. HDU 3336 Count the string

    题解:利用next数组来保存前缀位置,递推求解. #include <cstdio> #include <cstring> char pat[200005]; int next ...

  3. BootStrap 智能表单系列 九 表单图片上传的支持

    本章介绍如何在生成表单后,可以支持上传图片后可以及时预览图片 代码如下(连接地址:https://github.com/xiexingen/Bootstrap-SmartForm/blob/maste ...

  4. unity 播放外部视频

    摘要: Unity支持的播放视频格式有.mov..mpg..mpeg..mp4..avi和.asf.只需将对应的视频文件拖拽入Project视图即可,它会自动生成对应的MovieTexture对象. ...

  5. Linux新手笔记 源 安装chromium

    centos6.4 32 一.软件源目录/etc/yum.repos.d把新的软件源文件copy到这即可.二.安装chromiumwget http://people.centos.org/hughe ...

  6. Oracle中的Spool缓冲池技术可以实现Oracle导出txt格式文件

    利用Oracle中的Spool缓冲池技术可以实现Oracle数据导出到文本文件 1.在Oracle PL/SQL中输入缓冲开始命令,并指定输出的文件名: spool d:output.txt; 2.设 ...

  7. 【C++】基于socket的多线程聊天室(控制台版)

    以前学习socket网络编程和多线程编程的时候写的一个练手程序 聊天室基本功能: 1.用户管理:登录,注册,登出,修改用户名,修改密码 2.聊天室功能:群聊,私聊,获取在线用户列表,获取所有用户列表 ...

  8. BZOJ 1211: [HNOI2004]树的计数( 组合数学 )

    知道prufer序列就能写...就是求个可重集的排列...先判掉奇怪的情况, 然后答案是(N-2)!/π(d[i]-1)! -------------------------------------- ...

  9. windows server2008 r2修改远程桌面连接端口。

    1. windows 2008远程桌面端口默认是用的是3389端口,但是由于安全考虑,通常我们安装好系统后一般都会考虑把原来的3389端口更改为另外的端口.   2.更改过程: 2-1.打开注册表:  ...

  10. php制作数据字典

    /** * 生成mysql数据字典 */ header("Content-type:text/html;charset=utf-8"); // 配置数据库 $database = ...