感觉hibernate太庞杂了,感觉还没自己写SQL来得快

J2EE 码拜 10年前 (2015-05-10) 1286次浏览 0个评论

最近学习hibernate,什么单项1-N,N-1,1-1,N-N,双向1-N,N-N,1-1。
总感觉是吧以前学过的东西重新换一个方式重新学习一遍,而且感觉把一个简单的问题不断的复杂化。
学习起来感觉问题太过复杂都不太记得住。

我就突然意识到是否我学习方法的问题,我在学习hibernate时,总是不断的寻找在数据库表层面是怎样做的,他和对象映射之间的关系,这样使得我感觉更混乱。
恰恰刚刚又看到一篇文章,说学ORM要忘掉数据库关系思维,学得越好记得越深数据库关系,则越难学习ORM。 要学习ORM,就得忘记数据库关系,从对象之间的关系考虑。
这也正好中了我自己之前的想法,可是我想这样做,却发现无法构思~

想问问各位实际开发中都是先建表然后反推hibernate的PO的吗

hibernate好像有插件的直接能生成实体类
不过我不会用~
感觉就是换数据库稍微方便点…其他的我也不知道有什么好处…
等高手回答~~
10分
学习hibernate或者是mybatis这类面向对象的集成框架的时候,是需要使用面向对象的思想来学习的,特别是hibernate。比如你进行延迟加载的查询时,就是直接使用Object.getxx()方法,不能总是用关系型来想。
在搭建大型的企业级应用还是有好处的,比如缓存之类的。不过hibernate确实有点庞大有点重,
庞大的好处就不言而喻咯,能做的事情多。还有就是提高开发效率。
引用 2 楼 xiangnan129 的回复:

学习hibernate或者是mybatis这类面向对象的集成框架的时候,是需要使用面向对象的思想来学习的,特别是hibernate。比如你进行延迟加载的查询时,就是直接使用Object.getxx()方法,不能总是用关系型来想。
在搭建大型的企业级应用还是有好处的,比如缓存之类的。不过hibernate确实有点庞大有点重,
庞大的好处就不言而喻咯,能做的事情多。还有就是提高开发效率。

另外问下为什么双向1-N中必须有N端做关系控制端,双向1-1中也必须由外表做控制关系端呢?这个真没想通

20分
引用 3 楼 finemi 的回复:
Quote: 引用 2 楼 xiangnan129 的回复:

学习hibernate或者是mybatis这类面向对象的集成框架的时候,是需要使用面向对象的思想来学习的,特别是hibernate。比如你进行延迟加载的查询时,就是直接使用Object.getxx()方法,不能总是用关系型来想。
在搭建大型的企业级应用还是有好处的,比如缓存之类的。不过hibernate确实有点庞大有点重,
庞大的好处就不言而喻咯,能做的事情多。还有就是提高开发效率。

另外问下为什么双向1-N中必须有N端做关系控制端,双向1-1中也必须由外表做控制关系端呢?这个真没想通

1.对于双向一对多肯定要在多的一端做关系控制,在做删除和插入时,可以避免很多不必要的update或者delete操作。
举个例子:比如商品(goods)和商品类别(category)。一个类别有多个商品,一个商品对对应一个类别,这是双向一对多吧。
在bean和配置中Goods中肯定有一个category属性,而category中肯定会有一个List<Goods>属性,
现在假如你在一的这一端控制,现在需要更新一个goods,而你的一这一端是category而,它是List<Goods>,那它会把整个list都遍历update一遍,很多商品的category是一样的。
就是说你在做update操作时,会把该goods的category相同的都实例都category一遍。因为你要更新肯定是会先查出该实例。

5分
当你遇到大量字段的数据提交到库或从库读取的时候就知道hibernate的好处了.
我做过有很多要提交的表单数据,经常是几十个字段的那种,写SQL语句会很头疼.
这个时候肯定觉得HIBERNATE更方便. 
hibernate给不懂sql的人带来极大方便
一直对hibernate不感冒。
之前开发用过hibernate,过程中各种纠结和思路混乱。之后改mybatis,SQL自己写。方便又容易维护。
5分
把一对一、一对多、多对多,写好一个,记下就行。
用起来方便,对象之间的引用可以get***

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明感觉hibernate太庞杂了,感觉还没自己写SQL来得快
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!