您的位置:首页 > 大数据 > 人工智能

Hibernate关联映射—组件映射

2008-11-11 20:28 453 查看
 
组件映射(User-Name)
关联属性是个复杂类型的持久化类,但不是实体既:数据库中没有表与该属性对应,但该类的属性要持久保存。
•<component name="name" class="Name">
•<property name="firstName" column="first_name"/>
•<property name="middleName" column="middle_name"/>
•<property name="lastName" column="last_name"/>
•</component>
当组件映射的属性不能和表中的字段简单对应的时候可以选择实现:
org.hibenrate.usertype.UserType或org.hibernate.usertype.CompositeUserType
1、首先创建domain类:
package com.zhaosoft.domain;
import java.util.Date;
public class User {
 private int id;
 private Name name;
 private Date birthday;
 private int ver;   //版本号,悲观锁
 public int getVer() {
  return ver;
 }
 public void setVer(int ver) {
  this.ver = ver;
 }
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public Date getBirthday() {
  return birthday;
 }
 public void setBirthday(Date birthday) {
  this.birthday = birthday;
 }
 public Name getName() {
  return name;
 }
 public void setName(Name name) {
  this.name = name;
 }
}
2、实现组件映射对应的类:
package com.zhaosoft.domain;
public class Name {
 private String firstName;
 private String middleName;
 private String lastName;
 public String getMiddleName() {
  return middleName;
 }
 public void setMiddleName(String middleName) {
  this.middleName = middleName;
 }
 public String getFirstName() {
  return firstName;
 }
 public void setFirstName(String firstName) {
  this.firstName = firstName;
 }
 public String getLastName() {
  return lastName;
 }
 public void setLastName(String lastName) {
  this.lastName = lastName;
 }
}
3、映射关系:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.zhaosoft.domain">
     <!-- 当discriminator-value值为0时,为普通员工 -->
 <class name="User">  
 <cache usage="read-only"/>
  <id name="id">
      <!-- 表示主键为自动增长 -->
   <generator class="hilo"/>
  </id>
  <!--版本号-->
  <version name="ver"/>
  <property name="birthday" type="date"/>
  
 <!-- 组件映射 -->
 <component name="name" class="Name">
 <property name="firstName" column="first_name"/>
 <property name="middleName" column="middle_name"/>
 <property name="lastName" column="last_name"/>
 </component>
 </class>
 <query name="getUserByID">
   <![CDATA[from User ]]>
 </query>
 
</hibernate-mapping>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息