Hibernate:检索策略的学习1.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hibernate:检索策略的学习1

Hibernate :检索策略的学习1 概述 检索数据,也就是查询数据是在⼀个系统中必不可少的⼀个功能。检索数据时的2个 问题: 1. 不浪费内 :例如,Customer和Order是双向1-N 的关系。当 Hibernate 从数据库 中加载 Customer 对象时, 如果同时加载所有关联的 Order 对象, ⽽程序实际 上仅仅需要访问 Customer 对象, 那么这些关联的 Order 对象就⽩⽩浪费了许多 内 。 2. 更⾼的查询效率:发送尽可能少的 SQL 语句。 由于篇幅原因,将内容分为了两部分: Hibernate :检索策略的学习1、Hibernate :检索策略的学习2 第⼀部分讲解了类级别的检索策略以及1-N和N-N 的检索策略,在第⼆部分中将学习 N-1和1-1的检索策略,并对检索策略进⾏总结。 类级别的检索策略 知识点 类级别可选的检索策略包括⽴即检索和延迟检索, 默认为延迟检索。 ⽴即检索: ⽴即加载检索⽅法指定的对象; 延迟检索: 延迟加载检索⽅法指定的对象。在使⽤具体的属性时,再进⾏加 载。 类级别的检索策略可以通过 元素的 lazy 属性进⾏设置。 如果程序加载⼀个对象的⽬的是为了访问它的属性,可以采取⽴即检索;如果程序加 载⼀个持久化对象的⽬的是仅仅为了获得它的引⽤,可以采⽤延迟检索,但需要 意 懒加载异常 (LazyInitializationEx eption :简单理解该异常就是Hibernate在使⽤延迟加 载时,并没有将数据实际查询出来,⽽只是得到了⼀个代理对象,当使⽤属性的时候 才会去查询,⽽如果这个时候session关闭了,则会报该异常)! 下⾯通过⼀个例⼦来进⾏讲解: Demo 在该Demo 中,我们只需要使⽤⼀个Customer 的对象即可,其中包含了id ,name等属 性。 延迟检索 ⾸先我们来测试⼀下元素的lazy属性为true的情况,也就是默认情况 (不设置)。 public class HibernateTest { private SessionFactory sessionFactory; private Session session; private Transaction transaction; @Before public void init() { Configuration configuration = ne Configuration().configu ServiceRegistry serviceRegistry = ne ServiceRegistryBuil .applySettings(configuration.getProperties()) .buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(servic session = sessionFactory .openSession(); transaction = session.beginTransaction(); } @After public void destroy() { mit(); session.close(); sessionFactory .close(); } @Test public void testClassLevelStrategy() { Customer customer = (Customer) session.load(Customer.clas System.out.println(customer.getClass()); System.out.println(customer.getCustomerId()); System.out.println(customer.getCustomerName()); } } 看⼀下上⾯的代码,该代码是利⽤Junit进⾏测试 (关于Ju

文档评论(0)

hhuiws1482 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档