1. 程式人生 > >Hibernate映射關系配置(四)

Hibernate映射關系配置(四)

rop app log () gets ati nts serializa bean

多對多單向:

Bean:

public class Student implements Serializable {
    
    private int id ;
    
    private String name ;
    
    private Set<Teacher> teachers ;
        ....
}
public class Teacher implements Serializable{

    private int id ;
    
    private String  name ;
    ....
}

xml:

Student.hbm.xml:
<class name = "Student"> <!-- id是來配置主鍵 name是類中的哪個屬性和主鍵映射 generator:表示主鍵的生成策略 --> <id name = "id"> <generator class="native" /> </id> <!-- property是用來把類中的屬性和表的字段做一一對應 --> <property
name="name" /> <set name="teachers" table="t_s"> <!-- key 會在指定的表中新添加列,外鍵--> <key column="sid" /> <many-to-many class="Teacher" column="tid" /> </set> </class> Teacher.hbm.xml: <class
name = "Teacher"> <!-- id是來配置主鍵 name是類中的哪個屬性和主鍵映射 generator:表示主鍵的生成策略 --> <id name = "id"> <generator class="native" /> </id> <property name="name" /> </class>

annotation:

@Entity
public class Student implements Serializable {
        @Id @GeneratedValue
    public int getId() {
        return id;
    }
        /**
     * joinColumns 是指定第三張表中的哪個字段引用當前類對應的表的主鍵
     * inverseJoinColumns 是指定第三張表中的哪個字段引用關聯的另一張表的主鍵
     * @return
     */
    @ManyToMany
    @JoinTable(name="ts",joinColumns={
            @JoinColumn(name="sid")
    },inverseJoinColumns={
            @JoinColumn(name="tid")
    })
    public Set<Teacher> getTeachers() {
        return teachers;
    }
}

@Entity
public class Teacher implements Serializable{
        @Id @GeneratedValue
    public int getId() {
        return id;
    }
}

多對多雙向:

Bean:

public class Student implements Serializable {
    
    private int id ;
    
    private String name ;
    
    private Set<Teacher> teachers ;
        ....
}
public class Teacher implements Serializable{

    private int id ;
    
    private String  name ;
    
    private Set<Student> stus ;
        ....
}

Xml:

Student.hbm.xml:
        <class name = "Student">
        <!-- id是來配置主鍵 
             name是類中的哪個屬性和主鍵映射
             generator:表示主鍵的生成策略
        -->
        <id name = "id">
            <generator class="native" />
        </id>
        <!-- property是用來把類中的屬性和表的字段做一一對應 -->
        <property name="name" />
        
        
        <set name="teachers" table="t_s">
            <!-- key 會在指定的表中新添加列,外鍵-->
            <key column="sid" /> 
            <many-to-many class="Teacher" column="tid" />
        </set>
        
    </class>

Teacher.hbm.xml:
<class name = "Teacher">
        <!-- id是來配置主鍵 
             name是類中的哪個屬性和主鍵映射
             generator:表示主鍵的生成策略
        -->
        <id name = "id">
            <generator class="native" />
        </id>
        <property name="name" />
        
        <set name="stus" table="t_s" cascade="all">
            <key column="tid" />
            <many-to-many column="sid" class="Student" />
        </set>
    </class>

annotation:

@Entity
public class Student implements Serializable {
        @Id @GeneratedValue
    public int getId() {
        return id;
    }
        /**
     * joinColumns 是指定第三張表中的哪個字段引用當前類對應的表的主鍵
     * inverseJoinColumns 是指定第三張表中的哪個字段引用關聯的另一張表的主鍵
     * @return
     */
    @ManyToMany
    @JoinTable(name="ts",joinColumns={
            @JoinColumn(name="sid")
    },inverseJoinColumns={
            @JoinColumn(name="tid")
    })
    public Set<Teacher> getTeachers() {
        return teachers;
    }
}

@Entity
public class Teacher implements Serializable{
        @Id @GeneratedValue
    public int getId() {
        return id;
    }
        @ManyToMany(mappedBy="teachers")
    public Set<Student> getStus() {
        return stus;
    }
}

Hibernate映射關系配置(四)