• HelloHibernate详解


    1、 Configuration管理读取配置文件

    1     //读取src下hibernate.properties,不推荐使用
    2         Configuration cfg = new Configuration();
    3  //如果hibernate的核心配置文件 不叫 hibernate.cfg.xml ,叫hb.cfg.xml
    4         Configuration cfg1 = new Configuration().configure("hb.cfg.xml");
    5         //可编程式  可以不使用配置文件
    6         //cfg.addProperties();
    7         //cfg.addResource()

    Configuration在一个应用中,最好写一个。通过configuration来创建SessionFactory对象

    2、 SessionFactory对象:是一个session工厂。是一个重量级对象。在一个应用中最好也是单列的。是一个线程安全的。属于进程级别的对象。

     1 //2.通过Configuration创建SessionFactory对象
     2             //在hibernate3.x中是这种写法
     3             //SessionFactory sf = cfg.buildSessionFactory();
     4         //hibernate4.3之前~hibernate4.0
     5 //        ServiceRegistry sr = new ServiceRegistryBuilder()
     6 //                            .applySettings(cfg.getProperties())
     7 //                            .buildServiceRegistry();
     8         //hibernate4.3
     9         ServiceRegistry registry = new StandardServiceRegistryBuilder()
    10                               .applySettings(cfg.getProperties())
    11                               .build();
    12         SessionFactory sf = cfg.buildSessionFactory(registry);

    3、 Session对象:使用hibernate进行数据库操作,主要使用sessionSession可以理解为对Connection对象的一个包装。Session对象中提供了对数据库的crud操作。Session是一个线程不安全的对象。生命周期非常短暂,一般和事务一一对应。Session又称为hibernate中的一级缓存。Session又是transaction对象的工厂。

    4、 Transaction对象:事务管理对象。通过session来获取到该对象。包括了事务的开启,事务的提交,事务的回滚。

    1                 //第一种写法
    2         Transaction tx = session.beginTransaction();
    3         //第二种写法
    4         Transaction tran = session.getTransaction();
    5         tran.begin();    

    事务和异常处理:

     1 public static void main(String[] args) {
     2         Configuration cfg = null;
     3         SessionFactory sf = null;
     4         Session session = null;
     5         Transaction tx = null;
     6         try{
     7             cfg = new Configuration().configure();
     8             ServiceRegistry registry = new StandardServiceRegistryBuilder()
     9                                   .applySettings(cfg.getProperties())
    10                                   .build();
    11             sf = cfg.buildSessionFactory(registry);
    12             session = sf.openSession();
    13             tx = session.beginTransaction();
    14             User u  = (User)session.get(User.class, 2);
    15             System.out.println("name="+u.getName());
    16             //6.提交事务
    17             tx.commit();
    18         }catch (Exception e) {
    19             e.printStackTrace();
    20             //回滚事务
    21             tx.rollback();
    22         }finally{
    23             //7.关闭session
    24             if(session!=null&&session.isOpen())
    25             session.close();
    26         }
    27     }

    5Query对象:条件查询

  • 相关阅读:
    《ElasticSearch6.x实战教程》之准备工作、基本术语
    《ElasticSearch6.x实战教程》正式推出
    【好书推荐】《剑指Offer》之硬技能(编程题12~16)
    synchronized凭什么锁得住?
    synchronized到底锁住的是谁?
    Java面试宝典(2020版)
    50道Redis面试题及答案整理,史上最全!
    MySQL面试题及答案整理,史上最全!
    Github 上优秀的 Java 项目推荐
    100道MySQL常见面试题总结
  • 原文地址:https://www.cnblogs.com/jiangjianzhu/p/5534856.html
Copyright © 2020-2023  润新知