一對一映射

需求: 用戶身份證信息

          一條用戶記錄對應一條身份證信息!  一對一的關係!


1.基於外鍵的映射

javabean:

// 身份證
public class IdCard {

	// 身份證號(主鍵)
	private String cardNum;// 對象唯一表示(Object Identified, OID)
	private String place; //  身份證地址
	// 身份證與用戶,一對一的關係
	private User user;
	
// 用戶
public class User {

	private int userId;
	private String userName;
	// 用戶與身份證信息, 一對一關係
	private IdCard idCard;
	

User.hbm.xml配置

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="c_one2one">
	
	<class name="User" table="t_user">
		<id name="userId">
			<generator class="native"></generator>
		</id>	
		<property name="userName" length="20"></property>
		<!-- 
			一對一映射: 沒有外鍵方
		 -->
		 <one-to-one name="idCard" class="IdCard"></one-to-one>
			 
	</class>
	

</hibernate-mapping>

IdCard.hbm.xml配置

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="c_one2one">
	
	<class name="IdCard" table="t_IdCard">
		<id name="cardNum">
			<generator class="assigned"></generator>
		</id>	
		<property name="place" length="20"></property>
		
		<!-- 
			一對一映射,有外鍵方
			unique="true"   給外鍵字段添加唯一約束
		 -->
		 <many-to-one name="user" unique="true" column="user_id" class="User" cascade="save-update"></many-to-one>
			
	</class>
	

</hibernate-mapping>


2.基於主鍵的映射

javabean

// 身份證
public class IdCard {

	// 身份證號(主鍵)
	private String cardNum;// 對象唯一表示(Object Identified, OID)
	private String place; //  身份證地址
	// 身份證與用戶,一對一的關係
	private User user;
	
// 用戶
public class User {

	private int userId;
	private String userName;
	// 用戶與身份證信息, 一對一關係
	private IdCard idCard;
	

hbm.xml配置


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.itcast.c_one2one">
	
	<class name="IdCard" table="t_IdCard">
		<id name="cardNum">
			<generator class="assigned"></generator>
		</id>	
		<property name="place" length="20"></property>
		
		<!-- 
			一對一映射,有外鍵方
			unique="true"   給外鍵字段添加唯一約束
		 -->
		 <many-to-one name="user" unique="true" column="user_id" class="User" cascade="save-update"></many-to-one>
			
	</class>
	

</hibernate-mapping>


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.itcast.c_one2one">
	
	<class name="User" table="t_user">
		<id name="userId">
			<generator class="native"></generator>
		</id>	
		<property name="userName" length="20"></property>
		<!-- 
			一對一映射: 沒有外鍵方
		 -->
		 <one-to-one name="idCard" class="IdCard"></one-to-one>
			 
	</class>
	

</hibernate-mapping>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章