Hello Word

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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对象:条件查询

 

posted on 2016-05-27 15:45  该名称已被使用  阅读(159)  评论(0编辑  收藏  举报