Hibernate的學習總結(數據關聯)

 Hibernate中的數據關聯主要分爲三大類:

1對1: 一個人對應一個身份證

1對多,多對1:  一個人有很多聯繫地址 ,多個用戶擁有一個權限

多對多:  一個學生可以對應選很多門課,一門課可以對應有許多學生

 

一.1對1關係 --主鍵關聯

一個人對應一個身份證

表結構:

-- 創建表
CREATE TABLE person
(
 id VARCHAR(32) NOT NULL PRIMARY KEY ,
 name VARCHAR(20) NOT NULL ,
 age int
) ;
CREATE TABLE idcard
(
 id VARCHAR(32) ,
 serial VARCHAR(18) NOT NULL ,
 expiry int ,
 FOREIGN KEY(id) REFERENCES person(id) ON DELETE CASCADE
) ;

 

Person.java

 

IDCard.java

 

Person.hbm.xml 關聯主表

 

 

Idcard.hbm.xml 關聯從表

 

插入代碼示例:

 

二. 1對多,多對1關係 --外鍵關聯

1.1對多關係

 一個人有很多聯繫地址

表結構

CREATE TABLE person
(
 pid VARCHAR(32) NOT NULL PRIMARY KEY ,
 name VARCHAR(20) NOT NULL ,
 age INT
) ;

CREATE TABLE address
(
 aid VARCHAR(32) NOT NULL PRIMARY KEY ,
 name VARCHAR(50) NOT NULL ,
 zipcode VARCHAR(10) NOT NULL ,
 pid VARCHAR(32) ,
 FOREIGN KEY (aid) REFERENCES person(pid) ON DELETE CASCADE
) ;

 

Person.java

 

Address.java

 

Person.hbm.xml  關聯主表

 

Address.hbm.xml 關聯從表

 

 2.多對一關係

多個用戶擁有一個權限

 

表結構

-- 創建表
CREATE TABLE person
(
 id VARCHAR(32) PRIMARY KEY NOT NULL ,
 name VARCHAR(20) NOT NULL ,
 age INT ,
 gid VARCHAR(32)
) ;

 

CREATE TABLE TGROUP
(
 gid VARCHAR(32) PRIMARY KEY NOT NULL,
 name VARCHAR(20)
) ;

 

Person.java

 

TGroup.java

 

Person.hbm.xml 關聯主表

 

TGroup.hbm.xml 關聯從表

 

一對多是將映射關係寫在一的一端,多對一是將映射關係寫在多的一端。一對多和多對一的映射策略是一致的,都是通過在"多"的一端添加一個外鍵指向"一"的一端,只是站的角度不同。

不管多對一還是一對多,都是在"多"的一端添加一個外鍵指向"一"的一端,只不過是多對一是在多的一端爲其自己添外鍵,而一對多則是在一的一端爲多的一端添加外主鍵。

 

 

3.多對多關係

一個學生可以對應選很多門課,一門課可以對應有許多學生

 

表結構

CREATE TABLE person
(
 pid VARCHAR(32) NOT NULL PRIMARY KEY ,
 name VARCHAR(20) NOT NULL ,
 age INT
) ;
CREATE TABLE server
(
 sid VARCHAR(32) NOT NULL PRIMARY KEY ,
 name VARCHAR(20) NOT NULL
) ;
CREATE TABLE person_server
(
 pid VARCHAR(32) ,
 sid VARCHAR(32) ,
 FOREIGN KEY (pid) REFERENCES person(pid) ON DELETE CASCADE ,
 FOREIGN KEY (sid) REFERENCES server(sid) ON DELETE CASCADE
) ;

 

Person.java

 

Server.java

 

Person.hbm.xml

 

Server.hbm.xml

 

 

 

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