zoukankan      html  css  js  c++  java
  • Hibernate框架中的HibernateUtil

    对于刚学习三层框架的人来说。每个配置文件和每个类。以及功能来说都非常新奇,时常就忘记了相关类的功能。

    在这里建议编程就是要多加练习,才干熟能生巧。

    这里说一下HibernateUtil类,在使用Hibernate的前提是须要去下载Hibernate项目,然后在lib目录以下把全部的. jar 包

    COPY到你项目的lib目录下。

    什么是HibernateUtil类,或者是说有什么功能?


    Hibernate框架。主要解决的就是项目于数据库连接相关的问题,然而主要实现是须要靠配置文件里的代码与

    类进行映射,才干够实现详细的功能。

    那么HibernateUtil就是把代码读取配置文件的功能提取出来,由于每次读取操作都非常费时,这样一次就能够读取完成。

    属于把一种功能抽象出来。这些代码是很耗时的,我们希望它仅仅做一次,一般我们希望它仅仅做一次。我们去做一个工具类去初始化
    hibernate。工具类一般不希望被继承。别人来改写我的东西,一般用finally

       

    <span style="font-size:18px;"> //载入配置文件信息默觉得hiberna.cfg.xml,假设不是的话那么就在config()方法里面去解析他
         Configuration config = new Configuration();
         config.config();
         //创建工厂
         SessionFactory factory = config.bulidSessionFactory();
         //得到session
         Sesssion session  = factory.opensession();
         //创建对象
         
         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(); } }</span>



  • 相关阅读:
    iOS边练边学--tableView的批量操作
    iOS边练边学--简单的数据操作(增、删、改),左滑动删除和弹窗
    iOS边练边学--自定义非等高的cell
    iOS边练边学--自定义等高的cell
    iOS边练边学--UITableViewCell的常见属性设置
    iOS边练边学--UITableView性能优化之三种方式循环利用
    iOS边练边学--介绍布局的三种方法
    c++ 函数的函数声明
    using namespace std
    java.lang.ExceptionInInitializerError
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6821886.html
Copyright © 2011-2022 走看看