锁定老帖子 主题:论Hibernate,狭隘化了的ORM模型
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-19
我觉得楼主,讲的可以,讲的项目实际,他们说的好,只是一种理论化,支持楼主
|
|
返回顶楼 | |
发表时间:2011-05-19
最后修改:2011-05-19
兩點:
1:取數據的時候會過載(Overload),也就是SELECT時候把你不需要的字段也SELECT了。假如你有"潔癖“的話,可能覺得ibatis那種“自由選擇“似乎比較好,但是Overload的好處在於可以在高速緩存中存放完整的數據對象,其次一個應用中的SELECT模式可以窮舉,可以按照模式修改表結構,第三Hibernate的HQL提供投影,還有map構造或者new構造,第四如果希望退到ibatis那種模式,使用NativeSQL就可以了,還提供ObjectTransformer。 2:映射關係很重要。假設存在關係實體A與實體B多對多,比如Book和Tag,我要獲取Book的Tags或者刪除Book中的一條Tag,這樣的操作在配置好映射之後,不用寫SQL就可以安全可靠地完成。換句話說,映射關係提供了“語法糖“一樣的效果。而且,假如你數據庫有所更改,ORM這邊可以修改映射,而不用修改類,這在數據庫移植的時候可能有用(比如保留字)。另外ORM的數據方言使得你在數據庫間切換很方便,比如測試用數據庫HSQLDB/H2,產品數據庫Oracle/MySQL,想想你直接寫SQL維護不同的分頁限制代碼就可以了。 |
|
返回顶楼 | |
发表时间:2011-05-19
xiangfei209 写道 我觉得楼主,讲的可以,讲的项目实际,他们说的好,只是一种理论化,支持楼主
是实际,可能你们还没到那一步 |
|
返回顶楼 | |
发表时间:2011-05-19
术业有专攻啊LZ,你想用一个东西解决所有问题那是不可能的,hibernate强大的地方正是在于单类对单表的情况。。。
|
|
返回顶楼 | |
发表时间:2011-05-19
Hibernate本就是一个数据库工具。它基于数据库,其很多特性都是数据库特性的延伸。
不要对Hibernate报以巨大期望,它只是一个工具,crud工具。如果你想得太多,那么你会失望更多。你只要把它当做一个和其他工具类、框架一样的工具去使用即可,尽量发挥它的优势,那就是你的成功了。 至于模型,Hibernate的实体类本身是用java类的方式去面向表,它的状态是和数据库联接在一起的,如果硬是把它想象成一种内存里“万能”的对象,那么就剑走偏锋了。 |
|
返回顶楼 | |
发表时间:2011-05-19
建议楼主踏踏实实的学习一个月,再踏踏实实的用两年再评论,以免贻笑大方。
|
|
返回顶楼 | |
发表时间:2011-05-19
最后修改:2011-05-19
还是jdbc来的舒服,效率有了,灵活性也有了,起始也不麻烦,比起需求的变更,jdbc多带来的工作量几乎可以忽略不计
|
|
返回顶楼 | |
发表时间:2011-05-19
只会抱怨而不深入思考的人永远都只会报怨。
|
|
返回顶楼 | |
发表时间:2011-05-19
最后修改:2011-05-19
引用 完全没有必要类和表一一对应,除非某个表恰好构成了我们的一个业务逻辑 评价hihernate能做什么不能做什么首先要学的比别人多 无知还无畏了............... 你不懂hibernate不是你的错,不懂出来还吓唬别人就是愚蠢了知道不 hibernate 开始实现 其作者也说了,精华只有一个,orm 解决om的阻抗不匹配关系 你一再强调--对应不觉得自己无知么 弄一套狗屁不通的玩意,还强词夺理了,我看你上窜下跳,能蹦达出个啥来 靠卖嘴在je是混不下去的!!!!!!!!!!!! |
|
返回顶楼 | |
发表时间:2011-05-19
感觉楼主好像在说是领域模型对象与数据实体对象。
其实在我们项目中。实体对象,也就起到一个封数据表中记录值,在页面与表之间作为数据的传输者而已。除这一点没有任何其它功用。而Hibernate正好将这一过程给透明化了。 |
|
返回顶楼 | |