時間:2017年07月11日星期二
說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com
教學源碼:無
學習源碼:https://github.com/zccodere/s...
案例分析:企業項目開發過程中
一個項目可由多個員工參與開發 一個員工可同時參與開發多個項目
示意圖
多對多關聯
多對多關聯關系也是常見的一種關聯關系,如項目和員工之間就是典型的多對多關系 多對多關聯關系一般采用中間表的形式來實現,即新增一張包含關聯雙方主鍵的關聯表 多對多關聯可以使用第二章:配置案例 2-1 創建項目和表元素和 元素進行配置
創建一個maven項目,名為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
創建表
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.編寫Project類
package com.myimooc.hibernatemtm.entity; import java.io.Serializable; import java.util.HashSet; import java.util.Set; /** * project 實體類 * @author ZhangCheng on 2017-07-11 * */ public class Project implements Serializable{ private static final long serialVersionUID = 1L; private int proid; private String proname; // 添加一個員工的集合 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.編寫Employee類
package com.myimooc.hibernatemtm.entity; import java.io.Serializable; import java.util.HashSet; import java.util.Set; /** * employee 實體類 * @author ZhangCheng on 2017-07-11 * */ public class Employee implements Serializable{ private static final long serialVersionUID = 1L; private int empid; private String empname; // 添加一個項目的集合 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.編寫Project.hbm.xml文件
2.編寫Employee.hbm.xml文件
3.編寫hibernate.cfg.xml文件
2-4 測試org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver root root true update
代碼演示
1.編寫HibernateUtil類
package com.myimooc.hibernatemtm.util; /** * session會話工具類 * @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 { // 創建Configuration對象,讀取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; } /** * 關閉Session * @param session */ public static void closeSession(Session session){ if(session!=null){ session.close(); } } }
2.編寫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; /** * 多對多關聯關系的配置 * 同時建立了Project和Employee之間的雙向多對多關聯關系 * 關聯關系的維護交由Project方來處理,并且在保存Project對象時會一并保存Employee對象 * @author ZhangCheng on 2017-07-11 */ public class Test { public static void main(String[] args) { Project project1=new Project(1001,"項目一"); Project project2=new Project(1002,"項目二"); Employee employee1=new Employee(1,"慕女神"); Employee employee2=new Employee(2,"imooc"); //參加項目1的員工有慕女神和imooc project1.getEmployees().add(employee1); project1.getEmployees().add(employee2); // 參加項目2的員工有慕女神 project2.getEmployees().add(employee1); Session session=HibernateUtil.getSession(); Transaction tx=session.beginTransaction(); session.save(project1); session.save(project2); tx.commit(); HibernateUtil.closeSession(session); } }第三章:課程總結 3-1 多對多總結
課程總結
實現多對多關聯關系 在數據庫底通過添加中間表來指定關聯關系 在雙方的實體中添加一個保存對方的集合 在雙方的映射文件中使用元素和 元素進行關聯關系的配置
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67371.html
摘要:時間年月日星期二說明本文部分內容均來自慕課網。文件如下在目錄下,創建文件指定映射文件的路徑注解映射實體類可選,對應數據庫中的一個表。 時間:2017年07月11日星期二說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:類級別注解 1-1 本章簡介 本章簡介 H...
摘要:時間年月日星期二說明本文部分內容均來自慕課網。返回對象不同返回持久化實體類對象返回代理對象。與緩存的關系不同只緩存,但不使用緩存查詢緩存除外會使用緩存。 時間:2017年07月11日星期二說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:無 第一章:概述 1-1 概述 課程內容 了解緩存 掌握Hibernate一級緩存的使用 掌握H...
時間:2017年08月16日星期三說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 課程目錄 1.ssh知識點回顧 2.搭建ssm開發環境 3.struts2整合spring 4.spring整合hibernate 5.案例:使用ssh框架開發...
摘要:小時學會學習總結時間年月日星期六說明本文部分內容均來自慕課網。慕課網教學示例源碼暫無。數據庫操作下第六章事務管理事務管理只有查詢的時候不加事務,其它任何操作都要加事務。第七章課程回顧課程回顧總結介紹安裝配置的使用數據庫操作 《2小時學會SpringBoot》學習總結 時間:2017年2月18日星期六說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示...
摘要:前言首先聲明,這是一篇轉發博客,不屬于原創。關系映射有下面幾種類型一對一外鍵關聯映射單向一對一外鍵關聯,使用,并設置了級聯操作。設置了外鍵的名稱為數據庫字段名,如果不設置,則默認為另一類的屬性名,外鍵的值是唯一的。 前言 首先聲明,這是一篇轉發博客,不屬于原創。但是感覺很有用,所以在本人的博客中記錄下來。 Hibernate Annotation關系映射有下面幾種類型: 一對一...
閱讀 2993·2021-10-13 09:39
閱讀 2694·2021-09-27 13:34
閱讀 2031·2019-08-30 15:55
閱讀 3260·2019-08-30 15:43
閱讀 3631·2019-08-30 11:16
閱讀 1748·2019-08-26 18:28
閱讀 1283·2019-08-26 13:56
閱讀 914·2019-08-26 13:35