论坛首页 Java企业应用论坛

hibernate集合类映射的疑惑

浏览 1225 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-11-04  

 

首先我们以一个例子来说明:

 ITEM 与IMAGE(假设有多个字段比如name path size,item_id 等)

 

显然它们是一对多的关系,要实现它们的关联

则需在ITEM中需要加入一个集合类映射

这里牵涉到两种办法来解决这个问题,hibernate中有两种类型,实体和值类型。所以

第一:当用实体类型时其实就是用<one- to -many>即:item映射文件中加入:
<set name="image" table="image">

<key column="item_id"></key>

<one-to-many  class="Image">

</set>

 

第二:当使用值类型时,则需要使用到组件的结合

即:item映射文件中加入:
<set name="image" table="image">

<key column="item_id"/>

<composite-element class="Image">

<property name="name" column=""/>

...

</composite-element >

</set>

 

这两者都可以实现ITEM和IMAGE的关联,但是区别就在第2中的IMAGE不是一个实体类(持久化类),没有标识符。使用所有字段作为联合主键。

显然在实际中第一种应该会用到多些,我想不通“值类型的集合映射”在哪里有应用场景?

   发表时间:2009-11-04  
我想hibernate实现这两种关联实际上就是为了表示了UML中聚集和组合的概念。不知道hibernate能否映射内部类,如果能的话这个应该是一个应用场景。
在代码层面就不清楚了,也许hibernate会为值对象映射作一些优化吧。
0 请登录后投票
   发表时间:2009-11-04  
[b][/b][i][/i][u][/u]
引用
[img][/img]
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics