hibernate中many-to-one 、one-to-many这2课没听,请简单说明一下什么时候用它们,代码说明。讲得好我加分,分开讲。

解决方案 »

  1.   

    一个简单的many-to-one例子:部门和公司
    一个公司是拥有多个部门的,所以部门对应公司是一个多对一的关系(many-to-one)Company实体类public class Company {

    private int companyId;

    private String companyName; public int getCompanyId() {
    return companyId;
    } public void setCompanyId(int companyId) {
    this.companyId = companyId;
    } public String getCompanyName() {
    return companyName;
    } public void setCompanyName(String companyName) {
    this.companyName = companyName;
    }

    }
    Department 实体类public class Department {

    private int departmentId;

    private String departmentName;

    private Company companyId; public int getDepartmentId() {
    return departmentId;
    } public void setDepartmentId(int departmentId) {
    this.departmentId = departmentId;
    } public String getDepartmentName() {
    return departmentName;
    } public void setDepartmentName(String departmentName) {
    this.departmentName = departmentName;
    } public Company getCompanyId() {
    return companyId;
    } public void setCompanyId(Company companyId) {
    this.companyId = companyId;
    }
    }
    如果从数据库的设计角度来看,要实现某一部门所属公司就必须在部门表中添加一个公司的引用,也就是公司Id的外键
    所以在Department中会有Company类成员
      

  2.   

    写多了看不清楚 分开写  上面是实体类
    现在我们做映射文件 用最简单的方式 不考虑性能Company的映射文件Comapny.hbm.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
    <hibernate-mapping package="orm">
    <class name="Company">
    <id name="companyId">
    <generator class="native"/>
    </id>
    <property name="companyName"/>
    </class>
    </hibernate-mapping>
    Department的映射文件Department.hbm.xml<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
    <hibernate-mapping package="orm">
    <class name="Department" >
    <id name="departmentId">
    <generator class="native"/>
    </id>
    <property name="DepartmentName"/>
                    <!-- <many-to-one>在"多"的一端加入一个外键,
                            指向“一”的一端,这个外键是由<many-to-one>中的column属性定义的,
                            如果忽略了这个属性,那么默认的外键与实体的属性一致。
                     -->
    <many-to-one name="companyId" column="companyId" class="Company"/>
    </class>
    </hibernate-mapping>
      

  3.   

    数据的操作就不用再多说了吧......下面说说on-to-many上面是部门对应公司是一个 many-to-one
    反过来公司对应部门就是一个 one-to-many
    一个公司可以拥有多个部门实体类Department中不再拥有Company的字段
    而部门对于公司来说是一个集合
    所以Company中有一个用于保存部门的集合可以是List或着Set(建议使用泛型)我还是写一下吧......Company实体
    import java.util.Set;public class Company {

    private int companyId;

    private String companyName;

    private Set<Department> departments ; public int getCompanyId() {
    return companyId;
    } public void setCompanyId(int companyId) {
    this.companyId = companyId;
    } public String getCompanyName() {
    return companyName;
    } public void setCompanyName(String companyName) {
    this.companyName = companyName;
    } public Set<Department> getDepartments() {
    return departments;
    } public void setDepartments(Set<Department> departments) {
    this.departments = departments;
    }

    }Department实体public class Department {

    private int departmentId;

    private String departmentName;
    public int getDepartmentId() {
    return departmentId;
    } public void setDepartmentId(int departmentId) {
    this.departmentId = departmentId;
    } public String getDepartmentName() {
    return departmentName;
    } public void setDepartmentName(String departmentName) {
    this.departmentName = departmentName;
    }}