原创文章,转载请注明: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. asp.net core + angular2 的环境配置

    国内整个对 asp.net core  和 angular2这些新出来的关注度不是太好.跟国外比很大差距. 我在试着去做这个整合的时候也碰到不少问题. 最后通过查阅大量资料才弄明白. 我想肯定也会有类 ...

  2. Python 中psutil 模块的安装

    第一步下载psutil 的安装包 网址:https://pypi.python.org 第二步解压 .tar.gz cd psutil- 第三步安装: python setup.py build py ...

  3. 解决android TextView多行文本(超过3行)使用ellipsize属性无效问题

    布局文件中的TextView属性 <TextView android:id="@+id/businesscardsingle_content_abstract" androi ...

  4. Delphi中Android运行和JNI交互分析

    Androidapi.JNIBridge负责和JNI交互.,既然要交互,那么首先就是需要获得JNI的运行环境,Android本身内置的就有一个Java(Dalvik)虚拟机.所以这个第一步就肯定是要这 ...

  5. POJ 1721 CARDS(置换群)

    [题目链接] http://poj.org/problem?id=1721 [题目大意] 给出a[i]=a[a[i]]变换s次后的序列,求原序列 [题解] 置换存在循环节,因此我们先求出循环节长度,置 ...

  6. Codeforces 353D Queue(构造法)

    [题目链接] http://codeforces.com/contest/353/problem/D [题目大意] 10^6个男女排队,每一秒,如果男生在女生前面,即pos[i]是男生,pos[i+1 ...

  7. 【转载】Android Studio jar、so、library项目依赖,原文链接http://zhengxiaopeng.com/2014/12/13/Android-Studio-jar、so、library项目依赖/

    前言 Android Studio(以下简称AS)在13年I/O大会后放出预览版到现在放出的正式版1.0(PS.今天又更新到1.0.1了)历时一年多了,虽然Google官方推出的Android开发者的 ...

  8. Css Rest 方法

    在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是 重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览器都能够理解和适用多有CSS规则,并且呈现相同的 ...

  9. BAE初试

    BAE是百度的应用开发托管平台.  支持python nodejs java php 这几个环境~ 我在BAE上面搭建了1个wordpress. 记录下开启一个app的过程. 下面是所需工具 ---版 ...

  10. 零行代码为App添加异常加载占位图

    前文提要 近期准备重构项目,需要重写一些通用模块,正巧需要设置App异常加载占位图的问题,心血来潮设想是否可以零行代码解决此问题,特在此分享实现思路. 思路分享 对于App占位图,通常需要考虑的控件有 ...