TSS上面关于hibernate的get和load方法区别的讨论

本文讨论了Hibernate中get和load两个API的区别,get方法确保数据的实时性和准确性,而load方法通过返回proxy对象实现延迟加载,提高了应用性能。此外,文章还涉及了Hibernate的复杂性及其对开发效率的影响。
摘要由CSDN通过智能技术生成

TSS上面Ganesh同志的文章内容是非常有益的,讨论了session的这两个api的区别。get是每次都会从数据库取数据以保证数据的可靠。而load则会返回一个proxy,相当于一个存根,访问的时候从当前session或者hibernate二级缓存中查找,如果找不到则从数据库中Lazy Load一下。从Hibernate的复杂性上来说,这个概念应该算比较容易理解的,而且这种存在也是非常合理的。顺便里面还补充了一下JPA里面也有类似的getReference方法,行为类似load。看完文章你会开始注意这个细节。
可是,这个细节的下面却引起了n多人的讨论,讨论的核心就是Hibernate是不是有太多细节了?
很多人说这样不是OO的,很多人说Hibernate的细节造成它复杂,有人说Hibernate影响了他们的工作效率,等等,反正反对者站出来很多。我想这是可喜的。
说明在Java的Killer-APP组合Spring+Hibernate后面还是有很多持怀疑态度的人的,我们随时都需要提问题的大脑!
所以,我们也思考一下吧:
1、你一定要尽量的不断地熟悉你所使用的技术,可以是Hibernate也可以是JDBC,时刻保持对相关知识的饥渴。这样减少因为你的无知造成的失误。
2、思考别人的批评,或者说ORM不好,或者说这种那种ORM不好,你都要听着,然后思考,然后坚持你思考的结果,直到下一次思考。这个过程最好保持一定的技术偏执,因为没有性格的程序员不是好程序员。
3、放眼各种技术,了解相似技术,这样你不会在城头更换大王旗的时候失业:D。现在我们可以回头看看JDBC Dataset和JPA,向上向下都要看齐嘛。了解了相似技术更有助于你的思考。
4、知道你在讨论什么,知道背景。你需要知道Hibernate主要在Java or JavaEE中使用,当然有Hibernate.net,但是它不怎么火。还有,Hibernate的基础还是SQL和DBMS,你需要仔细了解这两种东西。
5、悟道。

Ganesh的原文:
Hibernate - Difference between session's get() and load()
http://gmarwaha.blogspot.com/2007/01/hibernate-difference-between-sessions.html
TSS上的讨论:
Difference between Hibernate's get() and load()?
http://www.theserverside.com/news/thread.tss?thread_id=43887

我以前翻译的Hibernate的session的javadoc,当时好像从字面上没有什么大的区别,配合这个帖子,要重新想一想:D
http://www.blogjava.net/iamtin/archive/2006/03/06/33910.html

BTW:因为做手术在家休养,所以才有时间发发牢骚:D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值