成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

慕課網(wǎng)_《Hibernate初探之多對(duì)多映射》學(xué)習(xí)總結(jié)

caozhijian / 2019人閱讀

時(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īng)用場(chǎng)景 1-1 多對(duì)多的應(yīng)用場(chǎng)景

案例分析:企業(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)可以使用元素和元素進(jìn)行配置
第二章:配置案例 2-1 創(chuàng)建項(xiàng)目和表

創(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
                    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 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.編寫(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 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.編寫(xiě)Project.hbm.xml文件




    
        
            
        
        
            
        
        
        
            
            
        
    
    

2.編寫(xiě)Employee.hbm.xml文件




    
        
            
        
        
            
        
        
        
            
            
        
    

3.編寫(xiě)hibernate.cfg.xml文件




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

代碼演示

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

相關(guān)文章

  • 課網(wǎng)_Hibernate注解》學(xué)習(xí)總結(jié)

    摘要:時(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...

    Jaden 評(píng)論0 收藏0
  • 課網(wǎng)_Hibernate緩存策略》學(xué)習(xí)總結(jié)

    摘要:時(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...

    codergarden 評(píng)論0 收藏0
  • 課網(wǎng)_《基于SSH實(shí)現(xiàn)員工管理系統(tǒng)之框架整合篇》學(xué)習(xí)總結(jié)

    時(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ā)...

    icattlecoder 評(píng)論0 收藏0
  • 課網(wǎng)_《2小時(shí)學(xué)會(huì)SpringBoot》學(xué)習(xí)總結(jié)

    摘要:小時(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é)示...

    aisuhua 評(píng)論0 收藏0
  • Hibernate映射關(guān)系

    摘要:前言首先聲明,這是一篇轉(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ì)一...

    gougoujiang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<