時(shí)間:2017年07月11日星期二
說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com
教學(xué)源碼:無(wú)
學(xué)習(xí)源碼:https://github.com/zccodere/s...
案例分析:企業(yè)項(xiàng)目開(kāi)發(fā)過(guò)程中
一個(gè)項(xiàng)目可由多個(gè)員工參與開(kāi)發(fā) 一個(gè)員工可同時(shí)參與開(kāi)發(fā)多個(gè)項(xiàng)目
示意圖
多對(duì)多關(guān)聯(lián)
多對(duì)多關(guān)聯(lián)關(guān)系也是常見(jiàn)的一種關(guān)聯(lián)關(guān)系,如項(xiàng)目和員工之間就是典型的多對(duì)多關(guān)系 多對(duì)多關(guān)聯(lián)關(guān)系一般采用中間表的形式來(lái)實(shí)現(xiàn),即新增一張包含關(guān)聯(lián)雙方主鍵的關(guān)聯(lián)表 多對(duì)多關(guān)聯(lián)可以使用第二章:配置案例 2-1 創(chuàng)建項(xiàng)目和表元素和 元素進(jìn)行配置
創(chuàng)建一個(gè)maven項(xiàng)目,名為hibernatemtm,POM文件如下
4.0.0 com.myimooc hibernatemtm 0.0.1-SNAPSHOT jar hibernatemtm http://maven.apache.org UTF-8 UTF-8 org.hibernate hibernate-core 4.3.0.Final mysql mysql-connector-java 5.1.38 junit junit 3.8.1 test org.apache.maven.plugins maven-compiler-plugin 1.8
創(chuàng)建表
create table project ( proid int primary key, proname varchar(20) not null ); create table employee ( empid int primary key, empname varchar(20) ); create table proemp ( rproid int, rempid int ); alter table proemp add constraint fk_rproid foreign key (rproid) references project(proid); alter table proemp add constraint fk_rempid foreign key (rempid) references employee(empid);2-2 持久化類
代碼演示
1.編寫(xiě)Project類
package com.myimooc.hibernatemtm.entity; import java.io.Serializable; import java.util.HashSet; import java.util.Set; /** * project 實(shí)體類 * @author ZhangCheng on 2017-07-11 * */ public class Project implements Serializable{ private static final long serialVersionUID = 1L; private int proid; private String proname; // 添加一個(gè)員工的集合 private Setemployees = new HashSet (); public Project() { } public Project(int proid, String proname) { this.proid = proid; this.proname = proname; } public Project(int proid, String proname, Set employees) { this.proid = proid; this.proname = proname; this.employees = employees; } @Override public String toString() { return "Project [proid=" + proid + ", proname=" + proname + ", employees=" + employees + "]"; } public int getProid() { return proid; } public void setProid(int proid) { this.proid = proid; } public String getproname() { return proname; } public void setproname(String proname) { this.proname = proname; } public Set getEmployees() { return employees; } public void setEmployees(Set employees) { this.employees = employees; } }
2.編寫(xiě)Employee類
package com.myimooc.hibernatemtm.entity; import java.io.Serializable; import java.util.HashSet; import java.util.Set; /** * employee 實(shí)體類 * @author ZhangCheng on 2017-07-11 * */ public class Employee implements Serializable{ private static final long serialVersionUID = 1L; private int empid; private String empname; // 添加一個(gè)項(xiàng)目的集合 private Set2-3 配置映射文件projects = new HashSet (); public Employee() { } public Employee(int empid, String empname) { this.empid = empid; this.empname = empname; } public Employee(int empid, String empname, Set projects) { this.empid = empid; this.empname = empname; this.projects = projects; } @Override public String toString() { return "Employee [empid=" + empid + ", empname=" + empname + ", projects=" + projects + "]"; } public int getEmpid() { return empid; } public void setEmpid(int empid) { this.empid = empid; } public String getEmpname() { return empname; } public void setEmpname(String empname) { this.empname = empname; } public Set getProjects() { return projects; } public void setProjects(Set projects) { this.projects = projects; } }
代碼演示
1.編寫(xiě)Project.hbm.xml文件
2.編寫(xiě)Employee.hbm.xml文件
3.編寫(xiě)hibernate.cfg.xml文件
2-4 測(cè)試org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver root root true update
代碼演示
1.編寫(xiě)HibernateUtil類
package com.myimooc.hibernatemtm.util; /** * session會(huì)話工具類 * @author ZhangCheng on 2017-07-11 * */ import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static SessionFactory sessionFactory; private static Session session; static { // 創(chuàng)建Configuration對(duì)象,讀取hibernate.cfg.xml文件,完成初始化 Configuration config = new Configuration().configure(); StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder() .applySettings(config.getProperties()); StandardServiceRegistry ssr=ssrb.build(); sessionFactory=config.buildSessionFactory(ssr); } /** * 獲取SessionFactory * @return */ public static SessionFactory getSessionFactory(){ return sessionFactory; } /** * 獲取Session * @return */ public static Session getSession(){ session=sessionFactory.openSession(); return session; } /** * 關(guān)閉Session * @param session */ public static void closeSession(Session session){ if(session!=null){ session.close(); } } }
2.編寫(xiě)Test類
package com.myimooc.hibernatemtm.test; import org.hibernate.Session; import org.hibernate.Transaction; import com.myimooc.hibernatemtm.entity.Employee; import com.myimooc.hibernatemtm.entity.Project; import com.myimooc.hibernatemtm.util.HibernateUtil; /** * 多對(duì)多關(guān)聯(lián)關(guān)系的配置 * 同時(shí)建立了Project和Employee之間的雙向多對(duì)多關(guān)聯(lián)關(guān)系 * 關(guān)聯(lián)關(guān)系的維護(hù)交由Project方來(lái)處理,并且在保存Project對(duì)象時(shí)會(huì)一并保存Employee對(duì)象 * @author ZhangCheng on 2017-07-11 */ public class Test { public static void main(String[] args) { Project project1=new Project(1001,"項(xiàng)目一"); Project project2=new Project(1002,"項(xiàng)目二"); Employee employee1=new Employee(1,"慕女神"); Employee employee2=new Employee(2,"imooc"); //參加項(xiàng)目1的員工有慕女神和imooc project1.getEmployees().add(employee1); project1.getEmployees().add(employee2); // 參加項(xiàng)目2的員工有慕女神 project2.getEmployees().add(employee1); Session session=HibernateUtil.getSession(); Transaction tx=session.beginTransaction(); session.save(project1); session.save(project2); tx.commit(); HibernateUtil.closeSession(session); } }第三章:課程總結(jié) 3-1 多對(duì)多總結(jié)
課程總結(jié)
實(shí)現(xiàn)多對(duì)多關(guān)聯(lián)關(guān)系 在數(shù)據(jù)庫(kù)底通過(guò)添加中間表來(lái)指定關(guān)聯(lián)關(guān)系 在雙方的實(shí)體中添加一個(gè)保存對(duì)方的集合 在雙方的映射文件中使用元素和 元素進(jìn)行關(guān)聯(lián)關(guān)系的配置
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67371.html
摘要:時(shí)間年月日星期二說(shuō)明本文部分內(nèi)容均來(lái)自慕課網(wǎng)。文件如下在目錄下,創(chuàng)建文件指定映射文件的路徑注解映射實(shí)體類可選,對(duì)應(yīng)數(shù)據(jù)庫(kù)中的一個(gè)表。 時(shí)間:2017年07月11日星期二說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無(wú)學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:類級(jí)別注解 1-1 本章簡(jiǎn)介 本章簡(jiǎn)介 H...
摘要:時(shí)間年月日星期二說(shuō)明本文部分內(nèi)容均來(lái)自慕課網(wǎng)。返回對(duì)象不同返回持久化實(shí)體類對(duì)象返回代理對(duì)象。與緩存的關(guān)系不同只緩存,但不使用緩存查詢緩存除外會(huì)使用緩存。 時(shí)間:2017年07月11日星期二說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無(wú)學(xué)習(xí)源碼:無(wú) 第一章:概述 1-1 概述 課程內(nèi)容 了解緩存 掌握Hibernate一級(jí)緩存的使用 掌握H...
時(shí)間:2017年08月16日星期三說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無(wú)學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 課程目錄 1.ssh知識(shí)點(diǎn)回顧 2.搭建ssm開(kāi)發(fā)環(huán)境 3.struts2整合spring 4.spring整合hibernate 5.案例:使用ssh框架開(kāi)發(fā)...
摘要:小時(shí)學(xué)會(huì)學(xué)習(xí)總結(jié)時(shí)間年月日星期六說(shuō)明本文部分內(nèi)容均來(lái)自慕課網(wǎng)。慕課網(wǎng)教學(xué)示例源碼暫無(wú)。數(shù)據(jù)庫(kù)操作下第六章事務(wù)管理事務(wù)管理只有查詢的時(shí)候不加事務(wù),其它任何操作都要加事務(wù)。第七章課程回顧課程回顧總結(jié)介紹安裝配置的使用數(shù)據(jù)庫(kù)操作 《2小時(shí)學(xué)會(huì)SpringBoot》學(xué)習(xí)總結(jié) 時(shí)間:2017年2月18日星期六說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示...
摘要:前言首先聲明,這是一篇轉(zhuǎn)發(fā)博客,不屬于原創(chuàng)。關(guān)系映射有下面幾種類型一對(duì)一外鍵關(guān)聯(lián)映射單向一對(duì)一外鍵關(guān)聯(lián),使用,并設(shè)置了級(jí)聯(lián)操作。設(shè)置了外鍵的名稱為數(shù)據(jù)庫(kù)字段名,如果不設(shè)置,則默認(rèn)為另一類的屬性名,外鍵的值是唯一的。 前言 首先聲明,這是一篇轉(zhuǎn)發(fā)博客,不屬于原創(chuàng)。但是感覺(jué)很有用,所以在本人的博客中記錄下來(lái)。 Hibernate Annotation關(guān)系映射有下面幾種類型: 一對(duì)一...
閱讀 3010·2021-10-13 09:39
閱讀 2706·2021-09-27 13:34
閱讀 2046·2019-08-30 15:55
閱讀 3269·2019-08-30 15:43
閱讀 3650·2019-08-30 11:16
閱讀 1769·2019-08-26 18:28
閱讀 1302·2019-08-26 13:56
閱讀 928·2019-08-26 13:35