首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
Java
框架、开源
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
Hibernate新手关于lazy loading的困惑
[已结贴,结贴人:yihaijian1]
加为好友
发送私信
在线聊天
yihaijian1
钻石眼泪
等级:
发表于:
2008-07-07 21:37:14
楼主
刚开始接触Hibernate,跟着光盘里面的视频教程学习如何生成hbm文件啊,如何配置一对一,一对多,多对多关系啊,但是一段时间学习下来,感觉自己对
Hibernate还是没有概念,
我看JavaEye里面一位大师说学习Hibernate最重要的是学习Hibernate的运行原理,但是如何掌握呢?
他还说Hibernate的精华在于无与伦比的灵巧的对象持久层设计,如何去体会掌握这种灵巧的设计呢?
最后回到主题吧,在hibernate中为什么需要延迟加载,什么时候需要延迟加载,延迟加载带来的好处是什么?
一口气问了3个问题,好贪心,哈哈,希望大家能说多少说多少,给我学习Hibernate一些有意义的指导,谢谢。。
问题点数:
50
回复次数:
15
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
java2000_net_test
老紫竹的马甲 庆奥运,散分大行动
等级:
发表于:
2008-07-07 21:37:16
1
楼 得分:
0
此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【yihaijian1】截止到2008-07-07 21:37:11的历史汇总数据(不包括此帖):
发帖的总数量:2 发帖的总分数:120
结贴的总数量:2 结贴的总分数:120
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
cshuang01
飞鸟逐鹰
等级:
发表于:
2008-07-07 22:13:00
2
楼 得分:
0
延迟加载是为了提高性能 你现在可以不用钻那么透 自己多联系慢慢就会理解的
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
CAYU
中原
等级:
发表于:
2008-07-07 23:32:45
3
楼 得分:
0
延迟加载,理论上可以提高性能,但实际应用中并不能够得到那样的效果,
Hibernate 的设计是不错,但在应用上就要选择性的使用了。陷阱太多。
初学的人最好还是从jdbc开始。
一个好的设计不应该出现延迟加载这种东西。
要使用的数据。就一次查询出来。不要这里查询一下,那里在查询一下,性能会很差。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
M_song
找工作ing,各位有好的请帮忙介绍!
等级:
发表于:
2008-07-08 08:24:24
4
楼 得分:
0
为什么需要延迟加载?
解决性能问题;
什么时候需要延迟加载?
当性能有瓶颈的时候;
延迟加载带来的好处是什么?
提高性能;
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
select110
nihaosdfklasj
等级:
发表于:
2008-07-08 08:53:24
5
楼 得分:
0
该回复于2008-07-08 09:58:51被版主删除
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zhkchi
火焰神
等级:
发表于:
2008-07-08 08:59:20
6
楼 得分:
0
要看情况而定。不是延迟加载就是好事。
不过建议楼主先搞清楚 数据库基本知识。比如 左右链接,内连接,全连接这些概念
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
caoyinghui1986
小熊猫
等级:
发表于:
2008-07-08 09:31:58
7
楼 得分:
0
在hibernate中为什么需要延迟加载,
延迟加载可以在不必要查询数据的时候不做查询。避免执行多余的查询而影响性能。
什么时候需要延迟加载,
如果有些对象不需要立即加载的时候。比如一对多的映射中 我只要一段对象的数据,多的一端不许要查询。就可以将集合设置为延迟。
延迟加载带来的好处是什么?
适当的时候延迟可以提高性能。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yihaijian1
钻石眼泪
等级:
发表于:
2008-07-08 12:23:17
8
楼 得分:
0
LS说得不错,可以还给我其他两个问题一点提示吗?就是如何去掌握Hibernate的运行原理和灵巧的对象持久层设计。。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
resetqq
r5yt ertw34t
等级:
发表于:
2008-07-08 16:18:29
9
楼 得分:
0
该回复于2008-07-08 20:50:28被版主删除
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jianpc
逝月
等级:
发表于:
2008-07-09 13:20:26
10
楼 得分:
0
比如在一个学生成绩管理系统中,拿班级和学生来做讲,班级中有一个学生集合,就是本班级的所有学生。当你要查看这个班级的基本信息的时候,hibernate会把你要的班级实体从数据库中取出来,想想,如果这个班级中有100个学生(甚至更多),是不是要把所有的这个班的学生都加载到内存中呢?所以这个时候就可以设置为延迟加载。等你要用的时候再加载这些对象。配置文件中,set集合优先考虑延迟加载,当然你也可以在程序中显式的加载这些对象。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ybbkd2
偷鸡的狐狸
等级:
发表于:
2008-07-20 18:39:31
11
楼 得分:
0
引用 3 楼 CAYU 的回复:
延迟加载,理论上可以提高性能,但实际应用中并不能够得到那样的效果,
Hibernate 的设计是不错,但在应用上就要选择性的使用了。陷阱太多。
初学的人最好还是从jdbc开始。
一个好的设计不应该出现延迟加载这种东西。
要使用的数据。就一次查询出来。不要这里查询一下,那里在查询一下,性能会很差。
精辟!!
与我理解的差不多,好的设计是应该避免延迟加载的,我从来不用 一对多关系的。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
daybybyby
等级:
发表于:
2008-07-21 09:21:47
12
楼 得分:
0
引用 3 楼 CAYU 的回复:
延迟加载,理论上可以提高性能,但实际应用中并不能够得到那样的效果,
Hibernate 的设计是不错,但在应用上就要选择性的使用了。陷阱太多。
初学的人最好还是从jdbc开始。
一个好的设计不应该出现延迟加载这种东西。
要使用的数据。就一次查询出来。不要这里查询一下,那里在查询一下,性能会很差。
好的设计不需要延迟加载么??受教了。。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
steven_cheng
286
等级:
发表于:
2008-07-21 16:46:48
13
楼 得分:
50
引用 3 楼 CAYU 的回复:
延迟加载,理论上可以提高性能,但实际应用中并不能够得到那样的效果,
Hibernate 的设计是不错,但在应用上就要选择性的使用了。陷阱太多。
初学的人最好还是从jdbc开始。
一个好的设计不应该出现延迟加载这种东西。
要使用的数据。就一次查询出来。不要这里查询一下,那里在查询一下,性能会很差。
瀑布汗!不知道不要胡说,误导小朋友...
Hibernate是一个O/R Mapping,不是仅仅简单的封装JDBC. O/R Mapping首先要解决的是O/R不匹配,就是对象和关系模型不匹配。
在关系模型中,数据是以二维表来表示的,并有严格的数学为理论基础,比如笛卡尔积、投影...等等
对象模型是以对象理论为基础的,就是继承、封装、多态。
所以我们表示一个多对一关系,比如学生-老师,在数据库表中就用学生表有一个老师表的外键来表示,而在一个对象模型中,则是学生对象有一个老师对象的引用,即学生这个类里有一个老师类型的成员变量。
那好了,在一个有一点规模的项目中,我们会发现没有孤孤单单的一个类,一个类总是和别人发生关系,要么持有别的对象的引用,要么被别的对象引用,这些引用还有自己的引用...这样一个对象就形成一个网状的对象图。当我们load一个对象的时候,如果没有懒加载,完了,我们要整个load这个对象图出来!!
这就是延迟加载的作用,在你用到的时候再加载相应的数据。
另外,不要以为你没有用one-to-many就没有用到懒加载,hibernate中所有对对象的引用默认都是懒加载的。
所以many-to-one也是懒加载的。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
hys21
阿生
等级:
发表于:
2008-07-21 20:31:50
14
楼 得分:
0
引用 13 楼 steven_cheng 的回复:
引用 3 楼 CAYU 的回复:
延迟加载,理论上可以提高性能,但实际应用中并不能够得到那样的效果,
Hibernate 的设计是不错,但在应用上就要选择性的使用了。陷阱太多。
初学的人最好还是从jdbc开始。
一个好的设计不应该出现延迟加载这种东西。
要使用的数据。就一次查询出来。不要这里查询一下,那里在查询一下,性能会很差。
瀑布汗!不知道不要胡说,误导小朋友...
Hibernate是一个O/R Mapping,不是仅仅简单…
看得出,这位兄台,是做过真实项目的.说的不错!
其实小的项目,根本就不需要HIBERNATE,反而还麻烦,但是我们为什么要学习她呢,原因就是因为她应用到企业级应用的时候,她的优点就显示出来了.
我个人认为延迟加载是为了提高企业级应用的性能.企业做软件都考虑性价比的,技术是为需求服务的!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yihaijian1
钻石眼泪
等级:
发表于:
2008-07-22 01:41:47
15
楼 得分:
0
最近一直在装Mac OS X,都把Java给抛弃了,好久没来论坛拉,谢谢13楼朋友的回复,分给你拉....
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友