有的时候,我们的某个类中含有一个复杂属性,我们不想这个属性自己又占用一张表,这时候我们可以使用组建映射方式。
比如现在有个用户类(Usermessage),他里面包含了一个Name属性,这时候我们就可以使用组件方式配置xml了。
Usermessage类:
package com.shizhan.po;
import java.util.Date;
public class UserMessage {
private Long userid ;
private Name name ;
private Date birthday;
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Long getUserid() {
return userid;
}
public void setUserid(Long userid) {
this.userid = userid;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
}
Name类:
package com.shizhan.po;
public class Name {
private String firstname ;
private String lastname ;
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;
}
}
usermessage.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.shizhan.po.UserMessage" table="UserMessage2" schema="SCOTT">
<id name="userid" type="java.lang.Long">
<column name="USERID" precision="10" scale="0" />
<generator class="native" />
</id>
<component name="name">
<property name="firstname" column="FNAME"/>
<property name="lastname" column="LNAME"/>
</component>
<property name="birthday" />
</class>
</hibernate-mapping>
组件方式配置的标签为:
<component name="name">
<property name="firstname" column="FNAME"/>
<property name="lastname" column="LNAME"/>
</component>