欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Hibernate 關系映射(6) 基于中間表關聯的單向1:

系統 2176 0
基于中間表關聯的單向1:N
單向 1 對 N 關聯,注意 和 N:1 是相反的

想象下: 吃大鍋飯的時候 ,就是很多人住一個地方,一個房間,一個大炕上

eg:? 一個地方有多個人住.或者說 多家人
eg:? 每個同學記住老師,比老師記住每個同學簡單.
(在 n 的一端進行配置效率高)

N??????????? 1
Person?? : Address
Student? : Teacher

這個里面放的是
單向N 對 1
包括??
無連接表的 N : 1
有連接表的 N : 1

注意需求 是:
以前N:1 是在N的一端配置,也就是因為多個人記住老師 比較容易
現在要在 1的一端配置,就是讓一個老師記住所有同學? (這個老師 記憶力比較好) 所以會有 一個集合 放置 所有同學

種類
FKrelated: 基于外鍵關聯
TBrelated: 基于中間表管理

中間表


Teacher

Hibernate 關系映射(6) 基于中間表關聯的單向1:N

Student

Hibernate 關系映射(6) 基于中間表關聯的單向1:N


    
public class Student {

	private Integer sid;
	private String sno;
	private String name;
	private int age;
//...

}

public class Teacher {

	private Integer tid;
	private String name;
	private int age;
	private Double salary;
	
	private Set<Student> students=new HashSet<Student>();


//....
}


  


    
DROP TABLE IF EXISTS mytest.teacher_student;

CREATE TABLE mytest.teacher_student
	(
	teacher_id INT NOT NULL,
	student_id INT NOT NULL,
	PRIMARY KEY (teacher_id, student_id),
	UNIQUE KEY student_id (student_id),
	KEY FK2E2EF2DE482FD2B0 (teacher_id),
	KEY FK2E2EF2DE37948810 (student_id),
	CONSTRAINT FK2E2EF2DE37948810 FOREIGN KEY (student_id) REFERENCES student (SID),
	CONSTRAINT FK2E2EF2DE482FD2B0 FOREIGN KEY (teacher_id) REFERENCES teacher (TID)
	);

DROP TABLE IF EXISTS mytest.teacher;

CREATE TABLE mytest.teacher
	(
	TID    INT NOT NULL,
	NAME   VARCHAR (255),
	AGE    INT,
	SALARY DOUBLE,
	PRIMARY KEY (TID)
	);

	DROP TABLE IF EXISTS mytest.student;

CREATE TABLE mytest.student
	(
	SID  INT NOT NULL,
	SNO  VARCHAR (255),
	NAME VARCHAR (255),
	age  INT,
	PRIMARY KEY (SID)
	);

  


    
<hibernate-mapping package="com.sh.study.model.o2n.TBrelated">
	<class name="Teacher" table="TEACHER">
		<id name="tid" type="java.lang.Integer" column="TID">
			<generator class="increment"/>
		</id> 
		<property name="name" type="java.lang.String">
			<column name="NAME" />
		</property>
		<property name="age" type="int">
			<column name="AGE" />
		</property>
		<property name="salary" type="java.lang.Double">
			<column name="SALARY" />
		</property>
	
		<!-- 無連接表的 1:N 
		<set name="students1" cascade="all">
			<key column="tid"/>
			<one-to-many class="Student"/>
		</set>
		 -->
		 
		<!-- 基于連接表的 1:N 注意采用  many-to-many 替換 one-to-many  -->
		<set name="students" table="teacher_student" cascade="all" inverse="false">
			<key column="teacher_id"/>
			<many-to-many column="student_id" class="Student" unique="true"/>
		</set>
		
	</class>
</hibernate-mapping>


<hibernate-mapping package="com.sh.study.model.o2n.TBrelated">
	<class name="Student" table="STUDENT">
		<id name="sid" type="java.lang.Integer" column="SID">
			<generator class="increment"/>
		</id> 
		<property name="sno" type="java.lang.String">
			<column name="SNO" />
		</property>
		<property name="name" type="java.lang.String">
			<column name="NAME" />
		</property>
		<property name="age" type="int">
			<column name="age" />
		</property>
	</class>
</hibernate-mapping>

  


test class
    
package com.sh.test.hibernate.o2n.tbrelated;

import java.util.Set;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.sh.study.model.o2n.TBrelated.Student;
import com.sh.study.model.o2n.TBrelated.Teacher;

//測試 Hibernate 單向 1:N
public class TestHibrO2N {
	private ApplicationContext act;
	private SessionFactory factory;
	@Before
	public void init(){
		act = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
		factory= act.getBean("sessionFactory",SessionFactory.class);
	}
	@Test
	public void test1() {
		Session session=factory.getCurrentSession();
		Transaction tx=session.beginTransaction();
		
		Student s1=new Student();
		s1.setName("ann");
		s1.setAge(15);
		s1.setSno("s10121");
		
		
		Student s2=new Student();
		s1.setName("lili");
		s1.setAge(16);
		s1.setSno("s10122");
		
		
		Teacher t1=new Teacher();
		t1.setName("Lukuc");
		t1.setAge(26);
		t1.setSalary(1258.5);
		Set<Student> ss=t1.getStudents();
		ss.add(s1);
		ss.add(s2);
		
		
		//持久化對象
		session.persist(t1);
		//session.flush();
		tx.commit();
	
		//如果不是使用的SessionFactory.getSession()來獲得Session。
		//而是使用SessionFactory.getCurrentSession()方法來獲得Session時,
		//當事務結束的時候,不管是提交還是回滾事務,hibernate會自動關閉Session的,
		//session.close();
	}
	

}

  

Hibernate 關系映射(6) 基于中間表關聯的單向1:N


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本大片在线免费观看 | 免费一看一级毛片 | 91短视频app下载 | 一级片在线免费 | 91网站在线观看视频 | 免费乱理伦片在线观看八戒 | 欧美日韩第二页 | 色蜜桃网 | 中文字幕av网 | 欧美日韩一区二区三区在线观看 | 少年班江依琳 | 国产精品爱啪在线线免费观看 | 天天摸夜夜摸狠狠摸夜夜摸 | 国产三级在线视频播放线 | 五月婷婷激情网 | 久久人 | 精品国产成人在线 | 久久精品欧美一区二区三区不卡 | 91大神精品长腿在线观看网站 | 我要看免费毛片 | 日本黄色大片免费观看 | 日韩电影免费观 | 欧美午夜一区 | 岛国毛片一级一级特级毛片 | 久久伊人色 | 国产又黄又猛又粗又爽的A片动漫 | 免费啪视频在线观看免费的 | 亚洲欧美视频网站 | 小明看片成人永久在线观看 | 日本不卡一区在线观看 | 欧美精品国产一区二区三区 | 色综合久久88色综合天天 | 欧美日韩国产精品自在自线 | 国产超碰人人做人人爱 | 午夜影院观看 | 久久久久久亚洲精品 | 2021国产成人综合亚洲精品 | 国产精品视频久久 | 国产毛片片精品天天看视频 | 欧美成年网站 | 人阁色第四影院在线电影 |