Hibernate關聯關係配置-----基於連線表的雙向多對多配置
實體:
package bi.many2many.jointable; import java.util.HashSet; import java.util.Set; public class Student { private int id; private String name; private Set<Teacher> teachers = new HashSet<Teacher>(); public Student() { } public Student(int id, String name, Set<Teacher> teachers) { super(); this.id = id; this.name = name; this.teachers = teachers; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<Teacher> getTeachers() { return teachers; } public void setTeachers(Set<Teacher> teachers) { this.teachers = teachers; } } package bi.many2many.jointable; import java.util.HashSet; import java.util.Set; public class Teacher { private int id; private String name; private Set<Student> students = new HashSet<Student>(); public Teacher() { } public Teacher(int id, String name, Set<Student> students) { super(); this.id = id; this.name = name; this.students = students; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<Student> getStudents() { return students; } public void setStudents(Set<Student> students) { this.students = students; } }
hbm對映檔案:
<hibernate-mapping> <class name="bi.many2many.jointable.Student"> <id name="id" column="sid"> <generator class="native" /> </id> <property name="name" type="string" column="name"></property> <set name="teachers" table="studentteacher"> <key column="sid"></key> <many-to-many class="bi.many2many.jointable.Teacher" column="tid"></many-to-many> </set> </class> </hibernate-mapping> <hibernate-mapping> <class name="bi.many2many.jointable.Teacher"> <id name="id" column="tid"> <generator class="native" /> </id> <property name="name" type="string" column="name"></property> <set name="students" table="studentteacher" inverse="true"> <key column="tid"></key> <many-to-many class="bi.many2many.jointable.Student" column="sid"></many-to-many> </set> </class> </hibernate-mapping>
測試檔案:
public class Test { @org.junit.Test public void testAdd() { SessionFactory sf = HibernateUtil.getSessionFactory(); Session session = sf.getCurrentSession(); session.beginTransaction(); Teacher t1 = new Teacher(); t1.setName("李剛"); Teacher t2 = new Teacher(); t2.setName("張孝祥"); Teacher t3 = new Teacher(); t3.setName("馬士兵"); Student s1 = new Student(); s1.setName("張三"); s1.getTeachers().add(t1); s1.getTeachers().add(t2); s1.getTeachers().add(t3); Student s2 = new Student(); s2.setName("李四"); s2.getTeachers().add(t3); s2.getTeachers().add(t2); session.save(t1); session.save(t2); session.save(t3); session.save(s1); session.save(s2); session.beginTransaction().commit(); } }
測試結果:
Hibernate: insert into Teacher (name) values (?)
Hibernate: insert into Teacher (name) values (?)
Hibernate: insert into Teacher (name) values (?)
Hibernate: insert into Student (name) values (?)
Hibernate: insert into Student (name) values (?)
Hibernate: insert into studentteacher (sid, tid) values (?, ?)
Hibernate: insert into studentteacher (sid, tid) values (?, ?)
Hibernate: insert into studentteacher (sid, tid) values (?, ?)
Hibernate: insert into studentteacher (sid, tid) values (?, ?)
Hibernate: insert into studentteacher (sid, tid) values (?, ?)
相關推薦
Hibernate關聯關係對映-----基於連線表的單向一對多對映
實體:package uni.many2one.jointable; public class Parent { private int id; private String name; private Child child; public Parent() {
Hibernate關聯關係對映-----基於連線表的單向多對多對映配置
實體:package uni.many2many.jointable; import java.util.HashSet; import java.util.Set; public class Student { private int id; private Str
Hibernate關聯關係對映-----基於連線表的單向一對一對映
實體:package uni.one2one.jointable; public class Husband { private int id; private String name; private Wife wife; public Husband() {
Hibernate關聯關係配置-----基於連線表的雙向多對多配置
實體:package bi.many2many.jointable; import java.util.HashSet; import java.util.Set; public class Student { private int id; private Stri
Hibernate關聯關係配置-----基於連線表的雙向一對一對映配置
實體:package bi.one2one.jointable; public class Husband { private int id; private String name; private Wife wife; public Husband() {
Hibernate中用left join(左外連線)查詢對映中沒有關聯關係的兩個表記錄問題
public class SplitSummary extends PubBean { // 結算賬單開始日期 private String startDate = ""; // 結算賬單結束日期 private String endDate = ""; // 店鋪編號 private Strin
Hibernate學習筆記(五) --- 創建基於中間關聯表的多對多映射關系
mys 兩個 override pac tid 一對多 main ber different 多對多映射是在實際數據庫表關系之間比較常見的一種,仍然以電影為例,一部電影可以有多個演員,一個演員也可以參演多部電影,電影表和演員表之間就是“多對多”的關系 針對多對多的映射關系,
Hibernate,關係對映的多對一單向關聯、多對一雙向關聯、一對一主鍵關聯、一對一外來鍵關聯、多對多關係關聯
2018-11-10 22:27:02開始寫 下圖內容ORM、Hibernate介紹、hibername.cfg.xml結構: 下圖內容hibernate對映檔案結構介紹 下圖內容hibernate
hibernate關聯關係雙向OneToOne
其實關聯關係看起來很簡單,就什麼一對一,一對多,多對多,但是深入發掘,你會知道其中它們之間的關係其實還是挺複雜的,所以今天先用個小例子講講雙向一對一吧~ 這裡我使用的是eclipse編寫的一個maven+hibernate的一個例子 首先
hibernate 關聯關係配置(一對多,多對一)
Hibernate 關聯關係: 1. 什麼是關聯(association) 1.1 關聯指的是類之間的引用關係。如果類A與類B關聯,那麼被引用的類B將被定義為類
Hibernate 關聯關係對映配置
Hibernate 關聯關係對映配置 問題背景 一個部門下有多個員工,每個員工只屬於一個部門 員工對部門(多對一) 部門對員工(一對多) 配置關聯關係 實體類 Employee.java publ
Hibernate關聯關係註解配置簡單理解
Hibernate關聯關係註解配置 什麼是關聯關係?關聯關係有哪幾種? 關聯關係指實體之間的關係,也就是表與表之間的關係。一個關係用兩個屬性來描述,數量性和方向性。 從數量上來看,表與表之間主要有三種關係,一對一,一對多,多對多。 加上關係的方向,還有一個多對一。 hibernate中關聯關係的維護
Hibernate基於主鍵的單項,雙向多對多對映關係
今天我們來一起談論下hibernate的基於主鍵的單項,雙向多對多對映關係 首先多對多都是基於主鍵的,沒有基於外來鍵的說法 1.基於主鍵的單項多對多 在這裡就是說中間stuobject是一張關係表,將兩張表的主鍵進行關聯,形成了多對多的關係 程式碼如
Hibernate關聯關係對映-----單向一對一對映配置
這裡舉了一夫一妻的例子。實體:package uni.one2one; public class Husband { private int id; private String name; private Wife wife; public Husba
web開發(十一)之Hibernate關聯關係配置
寫在前面 Hibernate中關係的對映共有以下四種:一對多、多對一、一對一、多對多這四種。 一對多單向關聯 xml對映 一對多即在A表中的每一條資料都會與B表中的n條有關聯;在這種情況下一般都是在B表新增一個欄位用來當作外來鍵與A表中的主鍵相關聯。而這種
Hibernate關聯關係配置(一對一,一對多,多對多)
第一種關聯關係:一對多(多對一) "一對多"是最普遍的對映關係,簡單來講就如消費者與訂單的關係。 一對多:從消費者角的度來說一個消費者可以有多個訂單,即為一對多。 多對一:從訂單的角度來說多個
hibernate的映射之四(多對多雙向關聯)
als oot bean odi 生成 指定 數據庫方言 映射文件 格式化sql Many-to-Many 多對多的映射可以使用一組Java集合不包含任何重復的元素來實現。我們已經看到了Hibernate如何設置映射集合。 集(SET)被映射到與映射表中<set&g
hibernate多對多雙向關系映射的級聯配置
hibernate多對多雙向關系映級配置多對多關系映射 set元素的屬性:cascade:級聯操作。取值:save-update:級聯保存更新delete:級聯刪除。 註意:在多對多雙向關系映射中,不能配置雙向級聯刪除。但是可以配置雙向級聯保存更新。 <set name=&q
Hibernate_day03---表與表關係建立、一對多配置及操作、多對多配置及操作
一、表與表關係建立思路 一對多關係 關係舉例: (1)分類和商品關係。 一個分類裡面有多個商品,一個商品只能屬於一個分類 (2)公司和員工關係 一個公司有多個員工,每個員工屬於一個公司 一對多建表:通過外來鍵建立關係 圖示: 多對多關係 關係舉例
【Hibernate(三)】Hibernate表操作、多對多配置
1.2 Hibernate的一對多關聯對映 1.2.1 資料庫表與表之間的關係 1.2.1.1 一對多關係 什麼樣關係屬於一對多? 一個部門對應多個員工,一個員工只能屬於某一個部門。 一個客戶對應多個聯絡人,一個聯絡人只能屬於某一個客戶。 一對多的建表原