1.为什么要用hibernateUtil这个类,先看这段代码:

    //加载配置文件信息默认为hiberna.cfg.xml,如果不是的话那么就在config()方法里面去解析他

     Configuration config = new Configuration();
     config.config();
     //创建工厂
     SessionFactory factory = config.bulidSessionFactory();
     //得到session
     Sesssion session  = factory.opensession();
     //创建对象
     这些代码是非常耗时的,我们希望它只做一次,一般我们希望它只做一次,我们去做一个工具类去初始化hibernate。工具类一般不希望被继承,别人来改写我的东西,一般用finally
     
     public finally HibernateUtil(){
       private static SessionFactory sessionFactory=null;
       //私有的构造方法,防止别人new出来,典型的单例设计模式的引用
        priavate HibernateUtil(){
            }
        static {

Configuration cfg = new Configuration();
  cfg.configure();
  sessionFactory = cfg.buildSessionFactory();
 }  

    public static SessionFactory getSessionFactory() {

return sessionFactory;
 }

public static Session getSession(){
  return  sessionFactory.openSession();
   }

   cfg.configure()这句话就会去读hibernate.cfg.xml里面的配置文件.如果你的配置文件不叫hibernate,cfg.xml,你就要用cfg.configure("filename")来指定你需要的配置文件。我们可以查看源代码。在使用cfg.configure()时:

public Configuration configure() throws HibernateException {
  configure( "/hibernate.cfg.xml" );
  return this;
 }

会把hibernate.cfg.xml传进去,eclipse会在哪里去找这个hibernate.cfg.xml这个文件呢?会在classpath中去找这个文件。src这个目录不是classpath,但是它为什么可以找的到呢?因为scr目录最终都会编译到classpath中去。session就类似与jdbc的connection.

     ibernate 中先对来说比较规范的一个添加一个对象的写法

static void addPerson(Person person) {
  Session session = null;
  Transaction tx = null;
  try {
   session = HibernateUtil.getSession();
   tx = session.beginTransaction();
   session.save(person);

} catch (HibernateException e) {
   if (tx != null)
    tx.rollback();
   throw e;  //这个时候最好是把异常抛出去,因为如果只是回滚的话,就没有任何提示给调用者。注意异常的处理,如果不抛出的话,因隐藏错误
  } finally {
   session.close();
  }

 
 
 
    }

hibernate工具类HibernateUtil详解的更多相关文章

  1. spring+hibernate实体类注解详解(非原创) + cascade属性取值

    @Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(nam ...

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

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

  3. StringUtils工具类常用方法详解

    StringUtils 常用方法 1.isEmpty(String str) 是否为空,空格字符为false2.isNotEmpty(String str) 是否为非空,空格字符为true3.isBl ...

  4. Java工具类DateFormatUtils详解

    日期和时间格式化实用程序和常量public static String format(Calendar calendar, String pattern) 说明:将日历格式化为特定的模式:参数:cal ...

  5. Java日期工具类DateUtils详解(转)

    jar包 appache下的 common-lang3 一. 对指定的日期新增年.月.周.日.小时.分钟.秒.毫秒 public static Date addDays(Date date, int ...

  6. Hibernate之工具类HibernateUtil

    原创文章,转载请注明:Hibernate之工具类HibernateUtil  By Lucio.Yang 1.最简单的工具类,实现SessionFactory的单例共享,session的管理 pack ...

  7. [转]hibernate缓存机制所有详解

    以下文章来自http://www.blogjava.net/tbwshc/articles/380013.html Hibernate 所有缓存机制详解 hibernate提供的一级缓存 hibern ...

  8. Hibernate入门(二)——hibernateAPI详解

    Hibernate API 详解 1.Configuration 功能:配置加载类,用于加载主配置,orm元数据加载 .创建: Configuration conf = new Configurati ...

  9. 黑苹果引导工具 Clover 配置详解及Clover Configurator使用

    黑苹果引导工具 Clover 配置详解及Clover Configurator使用  2017-03-11 14:01:40 by SemiconductorKING 转自:@三个表哥   简介: 可 ...

随机推荐

  1. vs2008 添加与修改模板.

    添加 我的模板: 路径:  C:\Users\Administrator\Documents\Visual Studio 2008\Templates\ItemTemplates\Visual C# ...

  2. BZOJ 3155: Preprefix sum

    大意:给一个数组,先求出SUM[I],然后动态的求出1-I的SUM[I]的和, 这题得化公式: 树状数组维护两个和:SUM(A[I])(1<=I<=X); SUM(A[I]*(N-I+1) ...

  3. HDOJ 1466 计算直线的交点数

    将n 条直线排成一个序列,直线2和直线1最多只有一个交点,直线3和直线1,2最多有两个交点,......,直线n 和其他n-1条直线最多有n-1个交点.由此得出n条直线互不平行且无三线共点的最多交点数 ...

  4. 使用PHP_UML生成代码的UML图

    在读别人代码的时候, 在没有详细文档的时候, 如何快速的看清整个代码的结构(类结构), 就成为了一个现实的问题. 今天我就介绍一种, 自动生成UML图的方法. 假设, 我有一个项目文件夹:laruen ...

  5. 设置VMWARE通过桥接方式使用主机无线网卡上网

    原文:http://www.cnblogs.com/liongis/p/3265458.html 环境:WIN7旗舰版,台式机,U盘无线上网卡. 虚拟软件:VMware9.0,虚拟系统:CentOS6 ...

  6. 使用 Swagger UI 与 Swashbuckle 创建 RESTful Web API 帮助文件

    作者:Sreekanth Mothukuru 2016年2月18日 本文旨在介绍如何使用常用的 Swagger 和 Swashbuckle 框架创建描述 Restful API 的交互界面,并为 AP ...

  7. HBase Java简单示例--转载

    Hbase采用Java实现,原生客户端也是Java实现,其他语言需要通过thritf接口服务间接访问Hbase的数据. Hbase作为大数据存储数据库,其写能力非常强,加上Hbase本身就脱胎于Had ...

  8. C#中反射泛型 CreateInstance

    假设1我有个类叫SortClass,类中有个BubbleSort(int[] array)用于给数组进行排序. 假设2我有个类叫SortT<T>,类中有个BubbleSort(T[] ar ...

  9. iOS第三方解决键盘遮挡-IQKeyboardManager

    百度云:http://pan.baidu.com/s/1yg5ae githun:https://github.com/hackiftekhar/IQKeyboardManager AppDelega ...

  10. hdu 2999 Stone Game, Why are you always there? 博弈论

    SG函数应用!! 代码如下: #include<cstdio> #include<cstring> #include<iostream> #include<c ...