



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除了解get和load的区别 面试题* get不支持lazy 延迟加载,load支持lazy为什么要用到延迟加载:1个账户10个订单,每一个订单3个商品,显示所有订单详情10个账号 * 10个订单 *3商品的详细信息* 采用get加载数据,如果没有匹配的数据,返回null,而load则抛出异常Hibernate 持久化什么是持久:永久瞬时状态:transient状态的特征-临时状态* 在数据库中没有与之匹配的数据* 没有纳入session的管理用new 创建的对象,它没有存入数据库,没有处于session中User user = new User(); /瞬时状态,刚刚被创建session.save(user);/持久状态持久状态:persistent状态的特征* persistent状态的对象在数据库中有与之匹配的数据* 纳入了session的管理* 在清理缓存(脏数据检查)的时候,会和数据库同步数据存入数据库中,加入到session的缓存中通过hibernate 保存的对象,对数据库操作此状态的对象叫持久化对象离线状态:detached状态的特征 游离状态* 在数据库中有与之匹配的数据* 没有纳入session的管理 持久的对象,脱离了session的对象(不归session管的对象)特点:已经被持久化过了,但是不在session中缓存,此状态的对象叫游离对象面试题临时状态持久状态游离状态是否处于session缓存中nyn数据库中是否有对应的记录nyypublic void testSave1() Session session = null;Transaction tx = null;User user = null;try session = HibernateUtils.getSession();tx = session.beginTransaction();/Transient状态user = new User();user.setName(李四);user.setPassword(123);user.setCreateTime(new Date();user.setExpireTime(new Date();/persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步session.save(user);user.setName(王五);/session.update(user);mit();catch(Exception e) e.printStackTrace();tx.rollback();finally HibernateUtils.closeSession(session);/detached状态user.setName(张三);try session = HibernateUtils.getSession();session.beginTransaction(); /persistent状态session.update(user);session.getTransaction().commit();catch(Exception e) e.printStackTrace();session.getTransaction().rollback();finally HibernateUtils.closeSession(session);public void testReadByGetMethod1() Session session = null;try session = HibernateUtils.getSession();session.beginTransaction();/马上发出查询sql,加载User对象User user = (User)session.get(User.class, 402880d01b9bf210011b9bf2a2ff0001);System.out.println(= + user.getName();/persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步user.setName(哥哥);session.getTransaction().commit();catch(Exception e) e.printStackTrace();session.getTransaction().rollback();finally HibernateUtils.closeSession(session);public void testReadByGetMethod2() Session session = null;try session = HibernateUtils.getSession();session.beginTransaction();/采用get加载数据,如果数据库中不存在相应的数据,返回nullUser user = (User)session.get(User.class, asdfsafsdfdsf);session.getTransaction().commit();catch(Exception e) e.printStackTrace();session.getTransaction().rollback();finally HibernateUtils.closeSession(session);public void testReadByLoadMethod1() Session session = null;try session = HibernateUtils.getSession();session.beginTransaction();/不会发出查询sql,因为load方法实现了lazy(懒加载或延迟加载)/延迟加载:只有真正使用这个对象的时候,才加载(发出sql语句)/hibernate延迟加载实现原理是代理方式User user = (User)session.load(User.class, 402880d01b9bf210011b9bf2a2ff0001);System.out.println(= + user.getName();/persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步user.setName(妹妹);session.getTransaction().commit();catch(Exception e) e.printStackTrace();session.getTransaction().rollback();finally HibernateUtils.closeSession(session);public void testReadByLoadMethod2() Session session = null;try session = HibernateUtils.getSession();session.beginTransaction();/采用load加载数据,如果数据库中没有相应的数据/那么抛出ObjectNotFoundExceptionUser user = (User)session.load(User.class, 55555555);System.out.println(user.getName();session.getTransaction().commit();catch(Exception e) e.printStackTrace();session.getTransaction().rollback();throw new java.lang.RuntimeException();finally HibernateUtils.closeSession(session);public void testUpdate1() Session session = null;try session = HibernateUtils.getSession();session.beginTransaction();/手动构造的detached状态的对象User user = new User();user.setId(402880d01b9be8dc011b9be9b23d0001);user.setName(顺顺);session.update(user);session.getTransaction().commit();catch(Exception e) e.printStackTrace();session.getTransaction().rollback();finally HibernateUtils.closeSession(session);public void testDelete1() Session session = null;try session = HibernateUtils.getSession();session.beginTransaction();/手动构造的detached状态的对象/User user = new User();/user.setId(402880d01b9be8dc011b9be9b23d0001);/user.setName(顺顺);/session.delete(user);User user = (User)session.load(User.class, 402880d01b9be8dc011b9be9b23d0001);session.delete(user);session.getTransaction().commit();catch(Exception e) e.printStackTrace();session.getTransaction().rollback();finally HibernateUtils.closeSession(session);/transient状态分页:Query query = session.createQuery(from User1);query.setFirstResult(2);query.setMaxResults(2)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司月度美食节活动方案
- 公司暖心小服务活动方案
- 公司武术协会活动方案
- 2025年网络营销师职业资格考试试卷及答案
- 2025年建筑设计专业资格考试题及答案
- 2025年供应链管理师职业资格考试题及答案
- 2025年爱好与特长发展课程考试卷及答案
- 2025年中国梁模板行业市场全景分析及前景机遇研判报告
- 住宅装饰装修施工课件
- 大学生心肺复苏健康宣教
- 2025-2030工程监理行业市场深度分析及竞争格局与投资价值研究报告
- 2024-2025学年度高中物理期中考试卷
- 福州一号线盾构法地铁工程整体施工组织设计
- GB 10770-2025食品安全国家标准婴幼儿罐装辅助食品
- 临时锅炉工用工合同标准文本
- 单病种质量管理实施方案
- 结构检测员考试题及答案
- 旅游保险产品讲解
- 装修业务居间推广合同
- 卵巢交界性肿瘤诊治进展
- 持续葡萄糖监测临床应用专家共识2024解读
评论
0/150
提交评论