Hibernate关联映射—组件映射

93 篇文章 0 订阅
8 篇文章 0 订阅
 

组件映射(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.UserTypeorg.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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值