Hello Word

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

1、 对象状态及生命周期

 

瞬时状态:

持久状态:

游离状态:

2、 new->save->close->update

 1 public void testSave(){
 2         Session session=null;
 3         Transaction tx=null;
 4         User user=null;
 5         try {
 6             session = HibernateUtil.getSession();
 7             tx = session.beginTransaction();
 8             //构造对象--瞬时状态
 9             user = new User();
10             user.setName("刘德华");
11             user.setPwd("2222");
12             //持久状态,user被session管理,并且id有值--oid
13             session.save(user);
14             //在持久状态下;脏数据检查:当提交事务,清理缓存时发现session中数据
15             //和数据库中数据不一致时,将会把session中的数据更新到数据库中
16             user.setName("学友");
17             //在保存以后 再修改对象 那么将会产生2条sql语句,那么效率较低,建议在save前修改
18             session.flush();
19             tx.commit();
20         } catch (Exception e) {
21             e.printStackTrace();
22             tx.rollback();
23         }finally{
24             HibernateUtil.closeSession();
25         }
26         //user:游离状态
27         System.out.println("姓名:"+user.getName());
28         user.setName("朝伟");
29         try {
30             session = HibernateUtil.getSession();
31             tx = session.beginTransaction();
32             //持久状态
33             session.update(user);
34             tx.commit();
35         } catch (Exception e) {
36             e.printStackTrace();
37             tx.rollback();
38         }finally{
39             HibernateUtil.closeSession();
40         }
41     }

3、get/load(持久)->delete(瞬时); get/load(持久)->colse(游离)

 

 1 @Test
 2     public void testLoad(){
 3         Session session=null;
 4         Transaction tx=null;
 5         User user=null;
 6         try {
 7             session = HibernateUtil.getSession();
 8             tx = session.beginTransaction();
 9             //持久状态
10             //load方法 相当于 之前的getById
11             //如果load查询的数据不存在,那么 抛出异常
12             //load不会立即查询数据,当使用的时候再查找数据
13             user = (User)session.load(User.class,1) ;
14             //System.out.println(user);
15             System.out.println("姓名:"+user.getName());
16             tx.commit();
17         } catch (Exception e) {
18             e.printStackTrace();
19             tx.rollback();
20         }finally{
21             HibernateUtil.closeSession();
22         }
23     }
24     @Test
25     public void testGet(){
26         Session session=null;
27         Transaction tx=null;
28         User user=null;
29         try {
30             session = HibernateUtil.getSession();
31             tx = session.beginTransaction();
32             //持久状态
33             //get方法 相当于 之前的getById
34             //如果get查询的数据不存在,那么返回null
35             //get方法会立即查询数据(session--数据库)
36             user = (User)session.get(User.class, 1) ;
37             System.out.println(user);
38             user.setName("张三");
39             //System.out.println("姓名:"+user.getName());
40             tx.commit();
41         } catch (Exception e) {
42             e.printStackTrace();
43             tx.rollback();
44         }finally{
45             //关闭session
46             HibernateUtil.closeSession();
47         }
48         //游离状态
49         user.setName("siggy");
50         System.out.println("============");
51         try {
52             session = HibernateUtil.getSession();
53             tx = session.beginTransaction();
54             //持久
55             session.update(user);
56             tx.commit();
57         } catch (Exception e) {
58             e.printStackTrace();
59             tx.rollback();
60         }finally{
61             //关闭session
62             HibernateUtil.closeSession();
63         }
64     }
65     @Test
66     public void testGet1(){
67         Session session=null;
68         Transaction tx=null;
69         User user=null;
70         try {
71             session = HibernateUtil.getSession();
72             tx = session.beginTransaction();
73             //持久状态
74             //get方法 相当于 之前的getById
75             //如果get查询的数据不存在,那么返回null
76             //get方法会立即查询数据(session--数据库)
77             user = (User)session.get(User.class, 2) ;
78             session.delete(user);
79             //瞬时状态
80             user.setName("王五");
81             tx.commit();
82         } catch (Exception e) {
83             e.printStackTrace();
84             tx.rollback();
85         }finally{
86             //关闭session
87             HibernateUtil.closeSession();
88         }
89         //瞬时状态
90         
91     }

 

4、 update方法:先获取对象再更新

 

 1 @Test
 2     public void testUpdate(){
 3         Session session=null;
 4         Transaction tx=null;
 5         User user=null;
 6         try {
 7             session = HibernateUtil.getSession();
 8             tx = session.beginTransaction();
 9             //手动创建对象 可以被更新,需要指定id
10             //当指定id不存在时 会抛异常
11             user = new User();
12             user.setId(10);
13             user.setName("paul");
14             session.update(user);
15             tx.commit();
16         } catch (Exception e) {
17             e.printStackTrace();
18             tx.rollback();
19         }finally{
20             //关闭session
21             HibernateUtil.closeSession();
22         }
23         //瞬时状态
24         
25     }
26     @Test
27     public void testUpdate1(){
28         Session session=null;
29         Transaction tx=null;
30         User user=null;
31         try {
32             session = HibernateUtil.getSession();
33             tx = session.beginTransaction();
34             //手动创建对象 可以被更新,需要指定id
35             //当指定id不存在时 会抛异常
36             user = (User)session.get(User.class, 1);
37             user.setName("t_bag");
38             user.setPwd("3333");
39             session.update(user);
40             tx.commit();
41         } catch (Exception e) {
42             e.printStackTrace();
43             tx.rollback();
44         }finally{
45             //关闭session
46             HibernateUtil.closeSession();
47         }
48         //瞬时状态
49     }

 

5、delete方法:先更新 再删除—》可以避免异常

 1 @Test
 2     public void testDelete(){
 3         Session session=null;
 4         Transaction tx=null;
 5         User user=null;
 6         try {
 7             session = HibernateUtil.getSession();
 8             tx = session.beginTransaction();
 9             //手动构建对象 并指定id可以从数据库删除
10             //如果指定id不存在 将抛异常
11             user = new User();
12             user.setId(3);
13             session.delete(user);
14             tx.commit();
15         } catch (Exception e) {
16             e.printStackTrace();
17             tx.rollback();
18         }finally{
19             //关闭session
20             HibernateUtil.closeSession();
21         }
22         //瞬时状态
23     }
24     @Test
25     public void testDelete1(){
26         Session session=null;
27         Transaction tx=null;
28         User user=null;
29         try {
30             session = HibernateUtil.getSession();
31             tx = session.beginTransaction();
32             user = (User)session.get(User.class, 1);
33             if(user!=null)
34                 session.delete(user);
35             tx.commit();
36         } catch (Exception e) {
37             e.printStackTrace();
38             tx.rollback();
39         }finally{
40             //关闭session
41             HibernateUtil.closeSession();
42         }
43         //瞬时状态
44     }

 

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