JiveJdon Community Forums
在线293人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » 开源项目大家谈
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 3 回复 / 1
 发表新帖子   回复该主题贴
drinkjava

悄悄话
发表文章: 6
注册时间: 2007年05月26日 05:31
Hibernate这样用好不好,有多少人赞成或已在用? 2007年05月26日 06:06 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表 hibernate(119)      oo思维(103)     
注: 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

悄悄话
发表文章: 9528
注册时间: 2002年08月03日 17:08
回复:Hibernate这样用好不好,有多少人赞成或已在用? 2007年05月28日 12:32 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
使用Hibernate最大误区和阻碍就是数据库的影响。

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

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

悄悄话
发表文章: 6
注册时间: 2007年05月26日 05:31
回复:回复:Hibernate这样用好不好,有多少人赞成或已在用? 2007年05月28日 23:31 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
感谢bang的回复,不过又多了一个没看懂贴就回的,这里讨论的是Hibernate一种用法,而不是Hibernate的正常用法。沟通真是困难啊。
[该贴被drinkjava于2007年05月28日 23:53修改过]
NewObject

悄悄话
发表文章: 1
注册时间: 2007年06月01日 15:08
re:Hibernate这样用好不好,有多少人赞成或已在用? 2007年06月01日 15:15 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
阿拉一直没用Hibernate做过正式的开发!也觉得这东西比较复杂而且效率有问题。不过居然我一个朋友说他们用Hibernate只是为了在开发的时候不用去考虑客户会用什么数据库。所以也和楼主一样只作单表映射!哈哈
这个主题有 3 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
  每2分种自动备份发贴内容Ctrl-V粘贴取出,提问题前先查询标签列表

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

anti spam