1、一对一主键方式单向关联映射
一个用户对应一个地址,类的代码如下
public class User {
private Address uaddress;
private int uid;
private String uname;
public User() {
super();
}
public User(String uname) {
super();
this.uname = uname;
}
public Address getUaddress() {
return uaddress;
}
public int getUid() {
return uid;
}
public String getUname() {
return uname;
}
public void setUaddress(Address uaddress) {
this.uaddress = uaddress;
}
public void setUid(int uid) {
this.uid = uid;
}
public void setUname(String uname) {
this.uname = uname;
}
@Override
public String toString() {
return "User [uaddress=" + uaddress + ", uid=" + uid + ", uname="
+ uname + "]";
}
}
public class Address {
private int aid;
private String aname;
public Address() {
super();
}
public Address(String aname) {
super();
this.aname = aname;
}
public int getAid() {
return aid;
}
public String getAname() {
return aname;
}
public void setAid(int aid) {
this.aid = aid;
}
public void setAname(String aname) {
this.aname = aname;
}
@Override
public String toString() {
return "Address [aid=" + aid + ", aname=" + aname + "]";
}
}
hbm 映射文件的代码如下:
User.hbm.xml
<?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="itany.entity">
<class name="User" table="tblUser">
<id name="uid" type="int" column="userid">
<generator class="foreign">
<param name="property">uaddress</param>
</generator>
</id>
<property name="uname" type="string" length="10" not-null="true"/>
<one-to-one name="uaddress" constrained="true"/>
</class>
</hibernate-mapping>
Address.hbm.xml
<?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="itany.entity">
<class name="Address" table="tblAddress">
<id name="aid" type="int">
<generator class="native"/>
</id>
<property name="aname" type="string" length="10" not-null="true"/>
</class>
</hibernate-mapping>
2、一对一主键方式双向关联映射
一个用户对应一个地址
User.hbm.xml
<?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="itany.entity">
<class name="User" table="tblUser">
<id name="uid" type="int" column="userid">
<generator class="foreign">
<param name="property">uaddress</param>
</generator>
</id>
<property name="uname" type="string" length="10" not-null="true"/>
<one-to-one name="uaddress" constrained="true" cascade="save-update"/>
</class>
</hibernate-mapping>
Address.hbm.xml
<?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="itany.entity">
<class name="Address" table="tblAddress">
<id name="aid" type="int">
<generator class="native"/>
</id>
<property name="aname" type="string" length="10" not-null="true"/>
<one-to-one name="auser" class="User"/>
</class>
</hibernate-mapping>
3、一对一外键方式单向关联映射
一个用户对应一个地址
User.hbm,xml
<?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="itany.entity">
<class name="User" table="tblUser">
<id name="uid" type="int" column="userid">
<generator class="native"/>
</id>
<property name="uname" type="string" length="10" not-null="true"/>
<many-to-one name="uaddress" column="uaid" unique="true" cascade="save-update"/>
</class>
</hibernate-mapping>
Address.hbm.xml
<?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="itany.entity">
<class name="Address" table="tblAddress">
<id name="aid" type="int">
<generator class="native"/>
</id>
<property name="aname" type="string" length="10" not-null="true"/>
</class>
</hibernate-mapping>
4、一对一外键方式双向关联映射
一个用户对应一个地址
User.hbm.xml
<?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="itany.entity">
<class name="User" table="tblUser">
<id name="uid" type="int" column="userid">
<generator class="native"/>
</id>
<property name="uname" type="string" length="10" not-null="true"/>
<many-to-one name="uaddress" column="uaid" unique="true" cascade="save-update"/>
</class>
</hibernate-mapping>
Address.hbm.xml
<?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="itany.entity">
<class name="Address" table="tblAddress">
<id name="aid" type="int">
<generator class="native"/>
</id>
<property name="aname" type="string" length="10" not-null="true"/>
<one-to-one name="auser" property-ref="uaddress"/>
</class>
</hibernate-mapping>
5、一对多单向关联映射
一个用户对应多个地址
User.hbm.xml
<?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="itany.entity">
<class name="User" table="tblUser">
<id name="uid" type="int" column="userid">
<generator class="sequence">
<param name="sequence">seq_user</param>
</generator>
</id>
<property name="uname" type="string" length="10" not-null="true"/>
<set name="uaddresses" cascade="save-update">
<key column="auid"/>
<one-to-many class="Address"/>
</set>
</class>
</hibernate-mapping>
Address.hbm.xml
<?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="itany.entity">
<class name="Address" table="tblAddress">
<id name="aid" type="int">
<generator class="native"/>
</id>
<property name="aname" type="string" length="10" not-null="true"/>
</class>
</hibernate-mapping>
6、多对一单向关联映射
一个用户对应多个地址
Address.hbm.xml
<?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>
<class name="itany.entity.Address" table="tblAddress">
<id name="aid" type="int">
<generator class="native" />
</id>
<property name="aname" type="string" length="10" not-null="true" />
<many-to-one name="auser" class="itany.entity.User" column="auid"
cascade="save-update" />
</class>
</hibernate-mapping>
User.hbm.xml
<?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="itany.entity">
<class name="User" table="tblUser">
<id name="uid" type="int" column="userid">
<generator class="native"/>
</id>
<property name="uname" type="string" length="10"/>
</class>
</hibernate-mapping>
7、一对多双向关联映射
一个用户对应多个地址
User.hbm.xml
<?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="itany.entity">
<class name="User" table="tblUser">
<id name="uid" type="int" column="userid">
<generator class="native"/>
</id>
<property name="uname" type="string" length="10" not-null="true"/>
<set name="uaddresses" cascade="save-update" inverse="false" >
<key column="auid"/>
<one-to-many class="Address"/>
</set>
</class>
</hibernate-mapping>
Address.hbm.xml
<?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="itany.entity">
<class name="Address" table="tblAddress">
<id name="aid" type="int">
<generator class="native"/>
</id>
<property name="aname" type="string" length="10" not-null="true"/>
<many-to-one name="auser" class="User" column="auid" />
</class>
</hibernate-mapping>
8、多对多双向关联映射
一个用户对应多个地址,一个地址也对应多个用户
User.hbm.xml
<?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="itany.entity">
<class name="User" table="tblUser">
<id name="uid" type="int" column="userid">
<generator class="native"/>
</id>
<property name="uname" type="string" length="10" not-null="true"/>
<set name="uaddresses" table="tblRelation_User_Address" inverse="false" cascade="save-update">
<key column="ruid"/>
<many-to-many class="Address" column="raid"/>
</set>
</class>
</hibernate-mapping>
Address.hbm.xml
<?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="itany.entity">
<class name="Address" table="tblAddress">
<id name="aid" type="int">
<generator class="native"/>
</id>
<property name="aname" type="string" length="10" not-null="true"/>
<set name="ausers" table="tblRelation_User_Address">
<key column="raid"/>
<many-to-many class="User" column="ruid"/>
</set>
</class>
</hibernate-mapping>