对象生命周期及crud操作
来源:互联网 发布:db2 命令行执行sql 编辑:程序博客网 时间:2024/06/03 04:06
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有值--oid13 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方法 相当于 之前的getById11 //如果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 @Test25 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方法 相当于 之前的getById34 //如果get查询的数据不存在,那么返回null35 //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 //关闭session46 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 //关闭session62 HibernateUtil.closeSession();63 }64 }65 @Test66 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方法 相当于 之前的getById75 //如果get查询的数据不存在,那么返回null76 //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 //关闭session87 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 //手动创建对象 可以被更新,需要指定id10 //当指定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 //关闭session21 HibernateUtil.closeSession();22 }23 //瞬时状态24 25 }26 @Test27 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 //手动创建对象 可以被更新,需要指定id35 //当指定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 //关闭session46 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 //关闭session20 HibernateUtil.closeSession();21 }22 //瞬时状态23 }24 @Test25 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 //关闭session41 HibernateUtil.closeSession();42 }43 //瞬时状态44 }
0 0
- 对象生命周期及crud操作
- Hibernate4-对象生命周期及CRUD操作
- Hibernate对象的生命周期及crud操作
- Hibernate 对象生命周期及crud操作
- hibernate4 之 对象生命周期及crud操作笔记
- Hibernate对象的CRUD操作
- mongoDB安装及CRUD操作
- EJB实现简单CRUD操作和生命周期探讨
- mybatis 的crud及批量cud操作
- SpringMVC3+Mybatis3(登录及CRUD操作)
- Hibernate配置及持久化操作(CRUD)
- MongoDB安装配置及CRUD操作
- SpringMVC3+Mybatis3(登录及CRUD操作)
- ZendFramework2学习笔记 “单表多对象”的CRUD操作、“多表单对象”的CRUD操作
- crud操作
- Mybatis核心对象及生命周期
- NHibernate学习手记(1) - 对象的简单CRUD操作
- NHibernate学习手记(1) - 对象的简单CRUD操作
- *.hbm.xml讲解
- 使用HMM隐式马尔科夫链实现基于拼音的文本纠错
- Hibernate4日志及配置文件
- 如何把文本文档导入MYSQL数据库?
- SpringBoot-thymeleaf模板集成
- 对象生命周期及crud操作
- React-Native 开发问题记录
- cmake 采用toolchain.cmake 文件进行arm-linux跨平台编译
- 怎么把CorelDRAW新工具栏调出
- skype 无法连接
- 四、usb设备注册
- SchemaExport的使用
- 组合主键映射
- 必须要注意的 C++ 动态内存资源管理(一)——视资源为对象