JiveJdon Community Forums
在线165人   首页   主题表   培训咨询   标签   查搜   注册    登陆 RSS
首页 » 论坛 » 开源项目大家谈
???en_US.forumThreadPrev.name??? 上一主题
RSS google yahoo 365Key网摘 CSDN网摘 添加到百度搜藏 POCO网摘 新浪ViVi QQ网摘
???en_US.forumThreadNext.name??? 下一主题
Go 共有 3 回复(1页) 阅读173次
 发表新帖子   回复该主题贴
drinkjava



发表文章:
注册时间: 2007年05月26日
悄悄话
个人博客
在线? 当前离线
我要关注该作者发言
Hibernate这样用好不好,有多少人赞成或已在用? 2007年05月26日 06:06 收藏关注本主题 到本帖网址 加入本帖到收藏夹 请用鼠标选择需要回复的文字再点按本回复键 回复该主题
标签          
注: Hibernate的复杂性是人尽皆知,想问一下Hibernate的退化用法,在JAVAEYE上发过这个贴子讨教,http://www.javaeye.com/topic/82107
,可惜那个坛子高手太多,问题还没看清就开始挥大棒了,只好放这里了,顺便把它的一些回贴也贴在这里,望同好们指点一二:

我用Hibernate也有半年了,感觉Hibernate的映射关系太复杂了,与懒性加载,反转控制等结合在一起,要想控制好,实非常人之所能。个人感觉,如果不用Hibernate的关联,就把它当作关系数据库来操作,使用和理解上都会方便不少,例如一个订单和产品的配置文件写成这样:
<hibernate-mapping>
<class name="db.Order" table="orders" catalog="sample">
<id name="id" type="java.lang.String">
<column name="ID" length="32" />
<generator class="uuid.hex" />
</id>
<property name="orderTitle" type="java.lang.String">
<column name="ORDER_TITLE" length="30" />
</property>
</class>
</hibernate-mapping>

<hibernate-mapping>
<class name="db.Product" table="products" catalog="sample">
<id name="id" type="java.lang.String">
<column name="ID" length="32" />
<generator class="uuid.hex" />
</id>
<property name="productTitle" type="java.lang.String">
<column name="PRODUCT_TITLE" length="30" />
</property>
<property name="orderId" type="java.lang.String">
<column name="ORDER_ID" length="32" />
</property>
</class>
</hibernate-mapping>
操作时:
Order o=new Order();
o.setOrderTitle("order1");
dao.saveOne(o);
Product p=new Product();
p.setProductTitle("product1");
p.setOrderId(o.getId());
dao.saveOne(p);
(HQL查询则仿照普通SQL中的写法,此处略)
这样一来,纯粹是用关系数据库的思想来使用Hibernate,一个类对应一个数据库表,表之间的约束交给数据库的键来控制, 这样一来,即得到了Hibernate的优点:不用手工写SQL,对象级别缓存,数据库可移植性,也不必费力地学习和理解它了,纯粹是一个薄薄的JDBC的包装; 缺点就是不能在HQL中写出"...object1.object2.object3..." 式的对象引用,而且关联表的加载要自已来维护,但我认为相对于理解它复杂的配置来说,这点牺牲还是值得的, Hibernate的高级特性当然没法用上了,但相比于直接用JDBC或用ibatis写SQL总要好得多,只要会关系数据库,就能立即上手,在新手多、工期短的项目中,可节省很多培训时间,而且对于后来维护者的要求也大大降低,请问我的这种想法是否可行?


以下为JAVAEYE上的回答
引用
java语言不是动态语言,简化不了这些操作。activeRecord给有我们非份之想,好像马丁大叔就在尝试做类时的orm框架。还有jruby给了我们可行的机会
答非所问,离题太远。


引用
不映射成类怎么利用OO思想啊,hibernate可以对一个对象进行操作,jdbc不行啊,主要是可以利用OO思想

你根本就没看明白这个贴子的观点,我的意思是完全不用OO思想,只是将hibernate当作一个比jdbc顺手点的工具而已,我用关系数据库好多年了,也开发过上百个表的应用,不用OO不也照样做挺好?JDBC不行,可也没人说不准用JDBC吧?


引用
请再好好理解一下ORMapping的含义。
另外不能充分发挥关联关系的优势,是否是因为没有遵循“对象模型” -> “关系模型” -> “Hibernate映射规则”的开发顺序?

同上,不是我没理解,而是本来就没打算采用“对象模型” -> “关系模型”,而是直接一个表对应一个类,走的是"关系模型"的路子。




引用
不用关系影射,你用hibernate干什么。

咱笨,用不好关联映射,怕出错,所以干脆不用它,可关系模型咱还是很精通的,所有的关系就交给数据库去约束它好了。至于为什么还要用Hibernate,是相比JDBC和ibatis来说的:不用写很多SQL,有缓存,跨数据库,支持分页,Spring支持,总之好处一言难尽啊...


引用
性能上去了,面向对象特性没有了

不知你是为了OO而开发,还是为了开发而OO


引用
我第一次用hibernate的时候就是这么用的
然后涉及到多表连接时统统搞成视图

不会这么恐怖吧?Hibernate很能干的,你google一下“hibernate多表查询”就知道了。


引用
我就这样用了快2年了,
非常的简便,门槛非常的低,效率也非常不错
级联查询统计返回object[]

可见笨人不只我一个啊,这个居然用了2年。Hibernate的这种用法确实很另类,与它诞生的初衷可说是背道而驰,但事实上,这种方式程序跑起来绝对没问题,问题是这种用法能否被团队接受,让我用起来心里有个底,这才是我发贴询问的原因。光一个人私底下用,当然没人会来说三道四,问题是能不能引入到团队开发中,作为一种替代JDBC的简易方案,而不是被团队中的高手当作异已一棒子打死,因为通常一提到Hibernate大家就会联想到ORM,这确实是一个很容易陷入的思维惯性,事实上,前面几个回贴都是这样,也不想想贴子要表达的是什么,就开始反驳了。
banq



发表文章: 11282
注册时间: 2002年08月03日
悄悄话
个人博客
在线? 当前离线
我要关注该作者发言 70人关注
回复:Hibernate这样用好不好,有多少人赞成或已在用? 2007年05月28日 12:32 收藏关注本主题 到本帖网址 加入本帖到收藏夹 请用鼠标选择需要回复的文字再点按本回复键 回复该主题
使用Hibernate最大误区和阻碍就是数据库的影响。

不要以为有了关系数据库基础知识,就能用好Hibernate,正好相反,更加用不好Hibernate

相关帖子:
http://www.jdon.com/jivejdon/thread/31684.html
drinkjava



发表文章: 6
注册时间: 2007年05月26日
悄悄话
个人博客
在线? 当前离线
我要关注该作者发言
回复:回复:Hibernate这样用好不好,有多少人赞成或已在用? 2007年05月28日 23:31 收藏关注本主题 到本帖网址 加入本帖到收藏夹 请用鼠标选择需要回复的文字再点按本回复键 回复该主题
感谢bang的回复,不过又多了一个没看懂贴就回的,这里讨论的是Hibernate的一种用法,而不是hibernate的正常用法。沟通真是困难啊。
[该贴被drinkjava于2007年05月28日 23:53修改过]
NewObject



发表文章:
注册时间: 2007年06月01日
悄悄话
个人博客
在线? 当前离线
我要关注该作者发言
re:Hibernate这样用好不好,有多少人赞成或已在用? 2007年06月01日 15:15 收藏关注本主题 到本帖网址 加入本帖到收藏夹 请用鼠标选择需要回复的文字再点按本回复键 回复该主题
阿拉一直没用hibernate做过正式的开发!也觉得这东西比较复杂而且效率有问题。不过居然我一个朋友说他们用hibernate只是为了在开发的时候不用去考虑客户会用什么数据库。所以也和楼主一样只作单表映射!哈哈
标签          
共有 3 回复(1页) Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
正在读取,请等待...
查询本论坛内 回复超过的热门帖子
标题
 
粗体: [b]文本[/b] 斜体: [i]文本[/i] 下划线 [u]文本[/u] 插入网上的图片 [img]http://wwww.xxxx.com/img.ext[/img] 插入代码 [code]程序代码[/code]  插入url链接 [url]http://url[/url] / [url=http://url]URL加下滑线[/url] 上传图片 word文档 Txt等附件
内容
  提交时自动拷贝以上内容到剪贴板 Ctrl+V可取出;提问题前先查询标签列表

使用帮助 手机m.jdon.com RSS add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的软件架构社区 推荐FireFox或Chrome快速浏览本站
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-10 jdon.com

anti spam