Hibernate关系映射——组件映射

来源:互联网 发布:python 字符串 编辑:程序博客网 时间:2024/04/30 09:27

如何理解组件?
         组件是某个实体的逻辑组成部分,它与实体的本质区别在于组件没有oid,可以把组件当做值对象。这样的解释可能有点抽象,举例来说:student类有id、name、address、phoneNo、email等属性。将address、phoneNo、email从student实体类中拿出来,单独建立一个联系方式类contact,这个类就叫做值对象,也就是所说的组件。
         在映射文件中,通过<component>标签,可以将contact类的属性映射到t_student表中,这样,t_student表中的字段就会是Student类中的id、name以及contact类中的address、phoneNo、email。而在数据库中,contact类不用单独创建一张表。

         映射文件:

   <class name="student" table="t_student">
        <id name="id">
             <generator class="native"/>
       </id>
      <property name="name"/>
      <component name="contact">
            <property name="email"/>
           <property name="address"/>
           <property name="phoneNo"/>
  </component>
 </class>

          采用组件映射的优点:实现了对象细粒度的划分,层次更加分明,复用率高。上面的student类,分为了基本信息id、name,还将联系方式作为contact类分离了出来,此外,还可以将爱好等信息再作为一类分离出来,这是我理解的细粒度的划分。分离出来的联系方式和爱好等,也可以作为其他对象(例如teacher、employer等)的组件,这样就为复用提供了方便。

原创粉丝点击