1.共享主鍵:限制兩個表的主鍵使用相同的值
2.唯一外鍵:
如:通常將會員的登陸賬號和會員的詳細信息分開
3.數據表
login表:
字段名稱 | 數據類型 | 主鍵 | 自增 | 允許為空 | 描述 |
ID | int(4) | yes | ID號 | ||
LOGINNAME | char(20) | yes | 登陸賬號 | ||
LOGINPWD | char(20) | yes | 登陸密碼 |
詳細信息company表:
字段名稱 | 數據類型 | 主鍵 | 自增 | 允許為空 | 描述 |
ID | int(4) | yes | 增1 | ID號 | |
COMPANGNAME | varchar(100) | yes | 公司名稱 | ||
TELPHONE | char(20) | yes | 聯系電話 | ||
char(20) | yes | 郵件 | |||
LINKMAN | char(20) | yes | 聯系人 |
4.PO類
Login.java
public class Login implements Serializable{
private Integer id;
private String loginName;
private String loginPwd;
private Company company;
public Login(){
}
}
Company.java
public class Company implements Serializable{
private Integer id;
private String companyName;
private String linkMan;
private String telphone;
private String email;
private Login login;
public Company(){
}
}
6.hbm.xml
Login.hbm.xml:
<hibernate-mapping package="com.lhb.vo">
<class="Login" table="login">
<id name="id" column="id" type="integer">
<!--直接采用外鍵的屬性值,使用foreign標識生成器,達到共享主鍵目的-->
<generator class="foreign">
<param name="property">company</param>
</generator>
</id>
<property name="loginName" column="LOGINNAME' type="String"/>
<property name="loginPwd" column="LOGINPWD" type="String"/>
<!--映射login與company一對一關聯-->
<one-to-one name="company" class="com.lhb.Company" constrained="true"/>
</class>
</hibernate-mapping>
<hibernate-mapping package="com.lhb.vo">
<class="company" table="COMPANY">
<id name="id" column="id" type="integer">
<generator class="identity"/>
</id>
<property name="companyName" type="String"/>
:
:
<one-to-one name="login" class="com.lhb.Login" cascade="all" <!--主控類的所有操作,對關聯類也執行同樣-->
lazy="false"/>
</class>
<hibernate-mapping>