最近学习hibernate,什么单项1-N,N-1,1-1,N-N,双向1-N,N-N,1-1。
总感觉是吧以前学过的东西重新换一个方式重新学习一遍,而且感觉把一个简单的问题不断的复杂化。
学习起来感觉问题太过复杂都不太记得住。
我就突然意识到是否我学习方法的问题,我在学习hibernate时,总是不断的寻找在数据库表层面是怎样做的,他和对象映射之间的关系,这样使得我感觉更混乱。
恰恰刚刚又看到一篇文章,说学ORM要忘掉数据库关系思维,学得越好记得越深数据库关系,则越难学习ORM。 要学习ORM,就得忘记数据库关系,从对象之间的关系考虑。
这也正好中了我自己之前的想法,可是我想这样做,却发现无法构思~
想问问各位实际开发中都是先建表然后反推hibernate的PO的吗
------解决思路----------------------
学习hibernate或者是mybatis这类面向对象的集成框架的时候,是需要使用面向对象的思想来学习的,特别是hibernate。比如你进行延迟加载的查询时,就是直接使用Object.getxx()方法,不能总是用关系型来想。
在搭建大型的企业级应用还是有好处的,比如缓存之类的。不过hibernate确实有点庞大有点重,
庞大的好处就不言而喻咯,能做的事情多。还有就是提高开发效率。
------解决思路----------------------
1.对于双向一对多肯定要在多的一端做关系控制,在做删除和插入时,可以避免很多不必要的update或者delete操作。
举个例子:比如商品(goods)和商品类别(category)。一个类别有多个商品,一个商品对对应一个类别,这是双向一对多吧。
在bean和配置中Goods中肯定有一个category属性,而category中肯定会有一个List<Goods>属性,
现在假如你在一的这一端控制,现在需要更新一个goods,而你的一这一端是category而,它是List<Goods>,那它会把整个list都遍历update一遍,很多商品的category是一样的。
就是说你在做update操作时,会把该goods的category相同的都实例都category一遍。因为你要更新肯定是会先查出该实例。
------解决思路----------------------
当你遇到大量字段的数据提交到库或从库读取的时候就知道hibernate的好处了.
我做过有很多要提交的表单数据,经常是几十个字段的那种,写SQL语句会很头疼.
这个时候肯定觉得HIBERNATE更方便.
------解决思路----------------------
把一对一、一对多、多对多,写好一个,记下就行。
用起来方便,对象之间的引用可以get***