首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate学习札记(四)

2012-10-24 
Hibernate学习笔记(四)心得:?? ?一,hibernate关心的永远只是一个一个属性,而不是数据库当中的表。这也就是

Hibernate学习笔记(四)

心得:?? ?一,hibernate关心的永远只是一个一个属性,而不是数据库当中的表。这也就是为什么inverse属性不放在多一方Item的时候,数据库更新的是Bid所代表的那张表。因为一旦建立了这种联系关系。Item和Bid有联系,在数据库当中,都是维护着Bid当中关于Item的外键。?? ? 但是数据库中的表和OO有着一些格格不入。因为OO对象与对象之间的关系是指针。比如书中的例子,一个Item,指向n个Bid。在java的世界里。有多少个Bag和Item。就会产生多少个对象。他们直接互相的指针标示着他们的关系。?? ? 但是在数据库中,则是完全另一幅景象。数据库中,对象与对象的关系通过的是通过外键来形成的。代表一个对象的一条记录有着另一个对象的记录的时候,就表示两个对象之间建立了联系。?? ? Hibernate在处理这种关系的时候,往往会把这表示联系的关系外键放在一得一方。one-to-one是联合主键。而many-to-one则是把外键放在了one的一方。这点起初让我很混淆。因为方向也好,真的让我很糊涂。
双向和单向?? ? 这个概念可能有点困扰。因为在hibernate中,只要在类当中有着链接。那么一定一个找到另一个。比如说例子中的bid和item,item中的bid是map或者set存放,那么通过item,一定能够找到相应的bid。只是单向的导航只是无法确定或者说必须先获得整体的包含bid的map,然后通过代码进行查找特定的bid。而双向的可以直接找到相应的bid。?? ? 所以来说,如果说需要双向导航,在表示两者这件一对多或者多对一的关系的时候,只能使用<idbag>,<list>和<map>这样的标签。因为这些标签使得在多端,会产生一个和一端相关,和多端无关的标识。而set,bag这种标签,则不会有这种东西
<mang-to-one>之类的标签?? ? ?开始的时候,我对于这些标签和迷惑。不知道其到底有着什么特别的作用。?? ? ?慢慢的,明白了这只是一个代表着一个类中的属性。和property之类的标签有着一样作用的。表示这个属性对应着何种的值。只是有了这个标签,就告诉了Hibernate。这个属性和其他的属性不一样。不能够单独存在。其和其他类有着特殊的关系。?<many>端的unique?? ? ?首先,从hibernate来说,其处理的是OR映射框架。而在操作层上面,其关心的只有在类当中的属性。在hibernate内部,只有属性和表中的关系应该是多对多的关系。但是从属性一端来理解hibernate的映射,将会是比较方便的方法。?? ? ?所以来说,如果many一端设置了unique,就等于把这一端设定成了one端。因为属性对应的字段为唯一,那么一切就好办很多。
<many-to-many>标签?? ? 其实这个标签和上面的标签没什么本质上很大的区别。也是一种映射的表示。?? ? 至于中间件的处理,如果简单点,就是一个类的映射。当然复杂一点,就要深入讨论了。这里就不展开了。
继承?? ? 这里的继承的与前面不同的是外部调用多态的实现。很简单,就好像组件的组装了。?? ? 当然有一点复杂,但是书上也说了。这个复杂的东西被用的概率很少很少。所以我就知道,解决这些问题是通过一个叫做<any>的标签。

热点排行