国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

慕課網_《Hibernate初探之多對多映射》學習總結

caozhijian / 2005人閱讀

時間:2017年07月11日星期二
說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com
教學源碼:無
學習源碼:https://github.com/zccodere/s...

第一章:應用場景 1-1 多對多的應用場景

案例分析:企業項目開發過程中

一個項目可由多個員工參與開發
一個員工可同時參與開發多個項目

示意圖

多對多關聯

多對多關聯關系也是常見的一種關聯關系,如項目和員工之間就是典型的多對多關系
多對多關聯關系一般采用中間表的形式來實現,即新增一張包含關聯雙方主鍵的關聯表
多對多關聯可以使用元素和元素進行配置
第二章:配置案例 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
                    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 Set employees = 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 Set 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;
    }

}
2-3 配置映射文件

代碼演示

1.編寫Project.hbm.xml文件




    
        
            
        
        
            
        
        
        
            
            
        
    
    

2.編寫Employee.hbm.xml文件




    
        
            
        
        
            
        
        
        
            
            
        
    

3.編寫hibernate.cfg.xml文件




    
        org.hibernate.dialect.MySQLDialect
        com.mysql.jdbc.Driver
        root
        root
        
            
        
        true
        update
        
        
         
        
        
    
2-4 測試

代碼演示

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

相關文章

  • 課網_Hibernate注解》學習總結

    摘要:時間年月日星期二說明本文部分內容均來自慕課網。文件如下在目錄下,創建文件指定映射文件的路徑注解映射實體類可選,對應數據庫中的一個表。 時間:2017年07月11日星期二說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:類級別注解 1-1 本章簡介 本章簡介 H...

    Jaden 評論0 收藏0
  • 課網_Hibernate緩存策略》學習總結

    摘要:時間年月日星期二說明本文部分內容均來自慕課網。返回對象不同返回持久化實體類對象返回代理對象。與緩存的關系不同只緩存,但不使用緩存查詢緩存除外會使用緩存。 時間:2017年07月11日星期二說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:無 第一章:概述 1-1 概述 課程內容 了解緩存 掌握Hibernate一級緩存的使用 掌握H...

    codergarden 評論0 收藏0
  • 課網_《基于SSH實現員工管理系統之框架整合篇》學習總結

    時間: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框架開發...

    icattlecoder 評論0 收藏0
  • 課網_《2小時學會SpringBoot》學習總結

    摘要:小時學會學習總結時間年月日星期六說明本文部分內容均來自慕課網。慕課網教學示例源碼暫無。數據庫操作下第六章事務管理事務管理只有查詢的時候不加事務,其它任何操作都要加事務。第七章課程回顧課程回顧總結介紹安裝配置的使用數據庫操作 《2小時學會SpringBoot》學習總結 時間:2017年2月18日星期六說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示...

    aisuhua 評論0 收藏0
  • Hibernate映射關系

    摘要:前言首先聲明,這是一篇轉發博客,不屬于原創。關系映射有下面幾種類型一對一外鍵關聯映射單向一對一外鍵關聯,使用,并設置了級聯操作。設置了外鍵的名稱為數據庫字段名,如果不設置,則默認為另一類的屬性名,外鍵的值是唯一的。 前言 首先聲明,這是一篇轉發博客,不屬于原創。但是感覺很有用,所以在本人的博客中記錄下來。 Hibernate Annotation關系映射有下面幾種類型: 一對一...

    gougoujiang 評論0 收藏0

發表評論

0條評論

caozhijian

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<