JiveJdon Community Forums
在线183人 Home | 论坛 | 培训咨询 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » 项目工程开发经验谈
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 3 回复 / 1 页 [ ]  发表新帖子  回复该主题贴
htao

发表文章: 9
注册时间: 2007年10月29日 13:06
给他发消息
hibernate oo疑惑? 发表: 2007年11月05日 17:52 回复
1.持久对象
 Person aPerson=new Person();//内存中建立空间
aPerson=dao.findbyid(new Long(x));//将此对象放到此空间内
而aPerson为持久对象,也就是说,对它的改动相当于是改数据库.

 多用户情况下,内存处理机制是怎样的?
要维持对象的持久性,要付出什么代价呢?
2.实现一个多条件的查询,除了用hql,sql外,还有什么办法呢?有了他们就不叫OO了吗?
我个人理解是,oo核心在设计模式.在于算法复用.松耦合,易于维护及扩展.

请各位高手给于说明与指正? 多谢!
banq

发表文章: 9114
注册时间: 2002年08月03日 17:08
给他发消息
回复:hibernate oo疑惑? 发表: 2007年11月06日 11:57 回复
为帮助你理解,打个比喻:你在火车站要把行李寄存,行李就相当于aPerson,你把行李给寄存处寄存,相当OO持久化保存到数据库;你从寄存处拿出行李,相当于findbyid从数据库获得对象。

这样,你思考几个问题:在这个过程中:寄存处的职责是什么?完整拷贝不走样的保存你的行李,然后再归还你的行李,至于你拿了行李后,还和寄存处有任何关系吗?或者你想让寄存处多做一些应该你做的事情,比如打开行李拿出一些东西再打成包(类似与使用SQL语句完成很多业务功能),可以吗?

为什么要寄存,也就是为什么要持久化?那是因为计算机要掉电,掉电后,内存中对象信息就没有了,所以需要抗掉电。

再打个比喻:企业系统其实和桌面系统很类似,桌面系统中我们编辑文本,为防止文字丢失,经常要save一下,同样,企业系统中,为防止业务对象丢失,就需要save一下,至于如何save,save的格式则不是我们业务程序员关心的了。

在桌面系统中,如果操作系统给你保存在文件也可以,保存成数据库也可以,保存成word文档或Excel都可以,你无需关心save这个具体过程。同样,在企业系统中,关系数据库也只是对象保存的一个媒介,可以以XML保存在硬盘上,都可以,Hibernate就是一个使用关系数据库保存对象的软件,就象桌面系统中notepad是用txt保存你的文字业务对象,word软件是用doc格式保存你的文字业务对象一样。

我们为什么对数据库容易接受,准确理解,而却无法理解OO是什么,都是和我们教育背景有关,所以,使用Hibernate实际上是一个重新学习软件的过程。不要着急。慢慢来,先准确理解OO,如从Evans DDD开始学习业务对象,而不是业务数据表。

htao

发表文章: 9
注册时间: 2007年10月29日 13:06
给他发消息
re:hibernate oo疑惑? 发表: 2007年11月06日 13:26 回复
板桥大哥多谢指点.
1.我明白对对象的状态是要通过对对象的操作来实现的.如上例,我清楚寄存处仅仅是一个 对象状态存储地.
2.如上例我在寄存处存有n个包,有m个是红色的,m个中 有k个是男式的,我要从寄存处提出来,是不是要用hql或sql?我没有想到其它办法.
程序中势必存在了sql语句,难道这样违背OO原则吗?dao实现了基本对象提取方式,但是并不能全部概括.
我一个同学在看到我写的程序中存在sql语句,他说我根本不懂OO,所以我提出上述问题.
3.另外,板桥大哥,我想知道,您能从我提出的问题中看出我现在存在那些OO思想上的不足?
banq

发表文章: 9114
注册时间: 2002年08月03日 17:08
给他发消息
回复:re:hibernate oo疑惑? 发表: 2007年11月07日 12:29 回复
>他说我根本不懂OO
他说的有道理,其实我前面已经指出OO思想不足,只是你没有明白,所以,你需要更多学习。也不要生气和害怕,因为80%人都和你一样,不同的是他们都没有意识到,而你已经意识到。
[该贴被banq于2007-11-07 12:30修改过]
这个主题有 3 回复 / 1 页 [ ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam