zoukankan      html  css  js  c++  java
  • 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对象:条件查询

  • 相关阅读:
    「BZOJ1061」 [Noi2008]志愿者招募
    [POJ 2891] Strange Way to Express Integers (扩展中国剩余定理)
    扩展中国剩余定理学习笔记
    扩展欧几里得算法+推论
    SPOJ16607 IE1
    [Luogu P4124] [CQOI2016]手机号码 (数位DP)
    [UOJ 275/BZOJ4737] 【清华集训2016】组合数问题 (LUCAS定理的运用+数位DP)
    一些很妙的网站
    [Luogu P3157][CQOI2011]动态逆序对 (树套树)
    [Luogu P3203] [HNOI2010]弹飞绵羊 (LCT维护链的长度)
  • 原文地址:https://www.cnblogs.com/jiangjianzhu/p/5534856.html
Copyright © 2011-2022 走看看