zoukankan      html  css  js  c++  java
  • hibernate基于注解实现映射关系的配置

    关联关系的配置步骤

    ①要理清楚管理关系
    ②确定管理依赖关系的哪一方

    1一对一
    例如:person 和IdCard

      ①确定依赖关系:一对一

      ②依赖关系由person类管理
    代码如下:

    person:

    @Entity
    @Table(name="t_person")
    public class Person
    {
        private int id;
        private String name;
        private IDCard card;
        
        @OneToOne(mappedBy="person")  --->  指定了OneToOne的关联关系,
       @joinColmun(name="idcard")
    public IDCard getCard() { return card; } public void setCard(IDCard card) { this.card = card; } @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

    IDCard:

    @Entity
    @Table(name="t_id_card")
    public class IDCard
    {
        private int id;
        private String no;
        private Person person;
        
        @Id
        @GeneratedValue
        public int getId()
        {
            return id;
        }
        public void setId(int id)
        {
            this.id = id;
        }
        public String getNo()
        {
            return no;
        }
        public void setNo(String no)
        {
            this.no = no;
        }
        @OneToOne(mappedBy="idCard")--->  OnetoOne指定了一对一的关联关系,一对一中随便指定一方来维护映射关系,mappedBy同样指定由对方来进行维护关联关系,这里选择Person来进行维护   public Person getPerson() { 
    return person;
    }
    publicvoid setPerson(Person person) {
    this.person = person;
    }
    }

    2一对多

    例如:teacher和student

      ①确定依赖关系:一对多

      ②依赖关系由多方(student)管理

    代码:

     teacher:

    public class Teacher {
    
        
        private String name;
        private  Set<Student> student=new HashSet<Student>();
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        @OneToMany(mappedBy="teacher",fetch=FetchType.LAZY)
        public Set<Student> getStudent() {
            return student;
        }
        public void setStudent(Set<Student> student) {
            this.student = student;
        }
        
    }

    student:

    public class Student{
        private String name;
        private  Teacher teacher;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        @ManyToOne(fetch=FetchType.LAZY)
        @JoinColumn(name="teacher")
        public Teacher getTeacher() {
            return teacher;
        }
        public void setTeacher(Teacher teacher) {
            this.teacher = teacher;
        }
        
    }

    3多对多

    例如:classRoom和student

      ①确定依赖关系:多对多

      ②依赖关系由多方(student)管理

    classRoom:

    public class ClassRoom{
    
        private String name;
        private Set<Student> students=new HashSet<Student>();
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        @ManyToMany(mappedBy="calssRooms",fetch=FetchType.LAZY)
        public Set<Student> getStudents() {
            return students;
        }
        public void setStudents(Set<Student> students) {
            this.students = students;
        }
        
        
    }

    student:

    public class Student{
        private String name;
        private  Set<ClassRoom> classRooms=new HashSet<ClassRoom>();
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        @ManyToMany(fetch=FetchType.LAZY)
        @JoinTable(name="xx_classRoom_student")
        public Set<ClassRoom> getClassRooms() {
            return classRooms;
        }
        public void setClassRooms(Set<ClassRoom> classRooms) {
            this.classRooms = classRooms;
        }
        
    }
  • 相关阅读:
    836. Rectangle Overlap
    背包问题---01背包最优方案总数(原理剖析代码实现)
    背包问题---01背包(原理,伪代码,编程实现)
    DP---基本思想 具体实现 经典题目 POJ1160 POJ1037
    DP---(POJ1159 POJ1458 POJ1141)
    DP--HDU 1003(最大子串和)
    DP----入门的一些题目(POJ1088 POJ1163 POJ1050)
    DFS(DP)---POJ 1014(Dividing)
    博弈---斐波那契博弈
    元素相加交换另解&puts的一个用法
  • 原文地址:https://www.cnblogs.com/jeremy-blog/p/5086018.html
Copyright © 2011-2022 走看看