Hibernat的get()和load()方法的区别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Hibernat的get()和load()方法的区别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1399字,纯文字阅读大概需要2分钟。
内容图文
![Hibernat的get()和load()方法的区别](/upload/InfoBanner/zyjiaocheng/1243/35f90d0cb0104b5bb3e4098ea57b182d.jpg)
Hibernat的get()和load()方法的区别
get()方法是立即查询
load()方法是延迟查询,Person person = (Person)session.load(Person.class,1);这句话其实没有去查找数据库,只是返回了一个代理。当真正需要的时候才去查找数据库比如输出System.out.println(p.getName());这个时候才发出查找数据库,所以load()方法是延迟查询。如果输出的 是ID也不会发出查询语句,因为Person person = (Person)session.load(Person.class,1)这句话已经指定是那条数据了。好处是:对象很大的时候可以用load,当数据很小的时候不适应用load方法。当load()方法查询的id不存在的时候会报ObjectNotFoundException异常。get方法查询的id不存在不会报错返回null.
也可以在映射文件中配置使用lazy 让load方法变成立即查询。
<? xml version="1.0" ?> <! DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" > <!-- 本文件就是一个java对象到关系数据库的映射配置文件 --> - < hibernate-mapping package ="bean" > <!-- class 配置 类 对应表的映射配置 name 表示类名 table 表示关系数据库中的表名 --> - < class table ="t_person" name ="Person" lazy = "false" > <!-- id 指定Person类中那个属性是Id --> - < id name ="id" > <!-- id生成策略 --> < generator class ="native" /> </ id > <!-- Person类的其他属性配置 name 对应 类的属性 column 对应表的字段名(如果没有设置column将使用name的值创建对应的列名) --> < property name ="name" column ="t_name" /> < property name ="password" column ="t_pass" /> <!-- type 表示指定属性 对应的hibernate类型 date 2013-02-17 time 17:02:28 timestamp 2013-02-17 17:03:07 默认 --> < property name ="birthday" type ="timestamp" /> </ class > </ hibernate-mapping >
原文:http://www.cnblogs.com/aicpcode/p/4177029.html
内容总结
以上是互联网集市为您收集整理的Hibernat的get()和load()方法的区别全部内容,希望文章能够帮你解决Hibernat的get()和load()方法的区别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。