`

Hibernate之component、composite-id、collection映射

阅读更多
Hibernate之component、composite-id、collection映射
2008-11-26 21:26

1、component映射

在hibernate中,component是某个实体的逻辑组成部分,它与实体的根本区别是没有oid,
component可以成为是值对象(DDD)

采用component映射的好处:它实现了对象模型的细粒度划分,层次会更分明,复用率会更高


实体类:

package com.hibernate;

public class User {

private int id;

private String name;

private Contact contact;

public int getId() {
   return id;
}

public void setId(int id) {
   this.id = id;
}

public String getName() {
   return name;
}

public void setName(String name) {
   this.name = name;
}

public Contact getContact() {
   return contact;
}

public void setContact(Contact contact) {
   this.contact = contact;
}

}


package com.hibernate;

public class Contact {

private String email;

private String address;

private String zipCode;

private String contactTel;

public String getEmail() {
   return email;
}

public void setEmail(String email) {
   this.email = email;
}

public String getAddress() {
   return address;
}

public void setAddress(String address) {
   this.address = address;
}

public String getZipCode() {
   return zipCode;
}

public void setZipCode(String zipCode) {
   this.zipCode = zipCode;
}

public String getContactTel() {
   return contactTel;
}

public void setContactTel(String contactTel) {
   this.contactTel = contactTel;
}
}


映射文件:

<hibernate-mapping>
<class name="com.hibernate.User" table="t_user">
   <id name="id">
    <generator class="native"/>
   </id>
   <property name="name"/>
   <component name="contact">
    <property name="email"/>
    <property name="address"/>
    <property name="zipCode"/>
    <property name="contactTel"/>
   </component>
</class>
</hibernate-mapping>


2、复合(联合)主键映射

通常将复合主键相关的属性,单独放到一个类中
   * 此类必须实现序列化接口
   * 覆写hashcode和equals方法


package com.hibernate;

import java.io.Serializable;

public class FiscalYearPeriodPK implements Serializable {

//核算年
private int fiscalYear;

//核算月
private int fiscalPeriod;

public int getFiscalYear() {
   return fiscalYear;
}

public void setFiscalYear(int fiscalYear) {
   this.fiscalYear = fiscalYear;
}

public int getFiscalPeriod() {
   return fiscalPeriod;
}

public void setFiscalPeriod(int fiscalPeriod) {
   this.fiscalPeriod = fiscalPeriod;
}

@Override
public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + fiscalPeriod;
   result = prime * result + fiscalYear;
   return result;
}

@Override
public boolean equals(Object obj) {
   if (this == obj)
    return true;
   if (obj == null)
    return false;
   if (getClass() != obj.getClass())
    return false;
   final FiscalYearPeriodPK other = (FiscalYearPeriodPK) obj;
   if (fiscalPeriod != other.fiscalPeriod)
    return false;
   if (fiscalYear != other.fiscalYear)
    return false;
   return true;
}

}


package com.hibernate;

import java.util.Date;

/**
* 核算期间
* @author wangy
*
*/
public class FiscalYearPeriod {

private FiscalYearPeriodPK fiscalYearPeriodPK;

//开始日期
private Date beginDate;

//结束日期
private Date endDate;

//状态
private String periodSts;

public Date getBeginDate() {
   return beginDate;
}

public void setBeginDate(Date beginDate) {
   this.beginDate = beginDate;
}

public Date getEndDate() {
   return endDate;
}

public void setEndDate(Date endDate) {
   this.endDate = endDate;
}

public String getPeriodSts() {
   return periodSts;
}

public void setPeriodSts(String periodSts) {
   this.periodSts = periodSts;
}

public FiscalYearPeriodPK getFiscalYearPeriodPK() {
   return fiscalYearPeriodPK;
}

public void setFiscalYearPeriodPK(FiscalYearPeriodPK fiscalYearPeriodPK) {
   this.fiscalYearPeriodPK = fiscalYearPeriodPK;
}
}


映射文件:

<hibernate-mapping>
<class name="com.bjsxt.hibernate.FiscalYearPeriod" table="t_fiscal_year_period">
   <composite-id name="fiscalYearPeriodPK">
    <key-property name="fiscalYear"/>
    <key-property name="fiscalPeriod"/>
   </composite-id>
   <property name="beginDate"/>
   <property name="endDate"/>
   <property name="periodSts"/>
</class>
</hibernate-mapping>

 

3、Collection的映射   set   list   array    map

实体类:

package com.hibernate;

import java.util.List;
import java.util.Map;
import java.util.Set;

public class CollectionMapping {

private int id;

private String name;

private Set setValue;

private List listValue;

private String[] arrayValue;

private Map mapValue;

public int getId() {
   return id;
}

public void setId(int id) {
   this.id = id;
}

public String getName() {
   return name;
}

public void setName(String name) {
   this.name = name;
}

public Set getSetValue() {
   return setValue;
}

public void setSetValue(Set setValue) {
   this.setValue = setValue;
}

public List getListValue() {
   return listValue;
}

public void setListValue(List listValue) {
   this.listValue = listValue;
}

public String[] getArrayValue() {
   return arrayValue;
}

public void setArrayValue(String[] arrayValue) {
   this.arrayValue = arrayValue;
}

public Map getMapValue() {
   return mapValue;
}

public void setMapValue(Map mapValue) {
   this.mapValue = mapValue;
}
}


映射文件:

<hibernate-mapping>
<class name="com.hibernate.CollectionMapping" table="t_CollectionMapping">
   <id name="id">
    <generator class="native"/>
   </id>
   <property name="name"/>
   <set name="setValue" table="t_set_value">
    <key column="set_id"/>
    <element type="string" column="set_value"/>
   </set>
   <list name="listValue" table="t_list_value">
    <key column="list_id"/>
    <list-index column="list_index"/>
    <element type="string" column="list_value"/>
   </list>
   <array name="arrayValue" table="t_array_value">
    <key column="array_id"/>
    <list-index column="array_index"/>
    <element type="string" column="array_value"/>
   </array>
   <map name="mapValue" table="t_map_value">
    <key column="map_id"/>
    <map-key type="string" column="map_key"/>
    <element type="string" column="map_value"/>
   </map>
</class>
</hibernate-mapping

分享到:
评论

相关推荐

    hibernate3.2中文文档(chm格式)

    5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 自然ID(natural-id) ...

    HibernateAPI中文版.chm

    5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 自然ID(natural-id) ...

    hibernate_reference中文文档.pdf

    - **5.1.7 composite-id**:描述如何映射复合主键。 - **5.1.8 鉴别器 (discriminator)**:介绍如何使用鉴别器来区分不同子类的实例。 - **5.1.9 版本 (version) (可选)**:说明版本属性的作用。 - **5.1.10 ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 自然ID(natural-id) ...

    Hibernate3.1_学习源码

    06 06Hibernate_Collection : Hibernate的容器映射技术,包括list、set和map等。用法大体一致,数据库中的两张表,在实体层设计和配置文件都只有一个 其中数据库用到级联删除。配置文件分别用list、set和map元素...

    Hibernate+中文文档

    5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 自然ID(natural-id) ...

    Hibernate中文详细学习文档

    5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 自然ID(natural-id) ...

    Hibernate 中文 html 帮助文档

    5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 自然ID(natural-id) 5.1.13. ...

    hibernate 体系结构与配置 参考文档(html)

    composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 自然ID(natural-id) 5.1.13...

    最全Hibernate 参考文档

    5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (optional) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 组件(component), 动态...

    Hibernate教程

    6.1.5. composite-id 6.1.6. 鉴别器(discriminator) 6.1.7. 版本(version)(可选) 6.1.8. timestamp (optional) 6.1.9. property 6.1.10. 多对一(many-to-one) 6.1.11. 一对一 6.1.12. 组件(component),...

    hibernate 教程

    composite-id 联合ID 5.1.6. 识别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. 时间戳(timestamp )(可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 ...

    Hibernate3的帮助文档

    6.1.5. composite-id 6.1.6. 鉴别器(discriminator) 6.1.7. 版本(version)(可选) 6.1.8. timestamp (optional) 6.1.9. property 6.1.10. 多对一(many-to-one) 6.1.11. 一对一 6.1.12. 组件(component),...

    hibernate3.04中文文档.chm

    6.1.5. composite-id 6.1.6. 鉴别器(discriminator) 6.1.7. 版本(version)(可选) 6.1.8. timestamp (optional) 6.1.9. property 6.1.10. 多对一(many-to-one) 6.1.11. 一对一 6.1.12. 组件(component),...

    hibernate组件之间的关联

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者使用 Java 对象来操作数据库,而无需直接编写 SQL 查询。在 Hibernate 中,组件之间的关联是实现对象模型与数据库表之间映射的关键部分,它包括了一对...

    Hibernate3+中文参考文档

    5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (optional) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 组件(component), 动态...

    hibernate 框架详解

    composite-id 6.1.6. 鉴别器(discriminator) 6.1.7. 版本(version)(可选) 6.1.8. timestamp (optional) 6.1.9. property 6.1.10. 多对一(many-to-one) 6.1.11. 一对一 6.1.12. 组件(component), 动态...

    Hibernate参考文档

    5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 自然ID(natural-id) 5.1.13. ...

    hibernate

    composite-id 联合ID 5.1.6. 识别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. 时间戳(timestamp )(可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 ...

    NHibernate中文帮助手册API

    (联合主键)composite-id  5.1.6. 鉴别器(discriminator)  5.1.7. 版本(version)(可选)  5.1.8. 时间戳 (可选)  5.1.9. 属性  5.1.10. 多对一  5.1.11. 一对一  5.1.12. 组件(component), 动态...

Global site tag (gtag.js) - Google Analytics