Hibernate之多对一

一、Department实体类

package com.manyToOne;

public class Department {

    private int id;
    private String name;

    public Department(){
        //Hibernate调用
    }

    public Department(String name){
        this.name=name;
    }

    public void setId(int id) {
        this.id = id;
    }
    public int getId() {
        return id;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
}

二Employee实体类

package com.manyToOne;

public class Employee {

    private int id;
    private String name;
    private Department department;
    public  Employee() {
        //Hibernate调用
    }
    public  Employee(String name) {
        this.name=name;
    }
    public void setDepartment(Department department) {
        this.department = department;
    }
    public Department getDepartment() {
        return department;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getId() {
        return id;
    }
}

三、*hbm.xml配置
Department.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.manyToOne">

    <class name="Department" >
        <id name="id" >
            <generator class="native"/>
        </id>
  <property name="name"  not-null="true" length="20"/>
    </class>

</hibernate-mapping>

Employee.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.manyToOne">

    <class name="Employee">
        <id name="id">
            <generator class="native" />
        </id>
        <property name="name" not-null="true" />
        <!-- 
         many-to-one 设置Employee对应于Department是多对一关系,即多个员工对应于同一个部门
         name 映射类属性的名字 
         class 关联类的名字
         column 关联的字段
         cascade 设置关联操作中级联策略 可选值为 
                      all所有操作情况均进行级联、
                      none所有操作情况均不进行级联、
                      save-update执行save和update操作时级联、
                      delete执行删除操作时级联
          fetch 设置抓取数据的策略,默认值是select序列抓取,可选值是join外连接抓取
          update 进行update操作时是否包含此字段
          insert 进行insert操作时是否包含此字段
          property-ref 指定关联类的一个属性,这个属性将会和本类的外键相对应
                             (当外键参照一键时需要指定改属性)

          -->
        <many-to-one name="department" class="Department" column="department_id"
            fetch="select" cascade="save-update" />
    </class>

</hibernate-mapping>
@Test
    public void testDepartment_Employee(){
          /**
           * 取得hibernate.cfg.xml配置文件
           */
            StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
                    .configure() // configures settings from hibernate.cfg.xml
                    .build();
            SessionFactory  sessionFactory = new MetadataSources(registry).buildMetadata()
                        .buildSessionFactory();


        Department department=new Department();
        department.setName("Department");
        Employee employee1=new Employee("John");
        employee1.setDepartment(department);
        Employee employee2=new Employee("Jeff");
        employee2.setDepartment(department);

        Session session=sessionFactory.openSession();
        Transaction transaction=session.beginTransaction();
        try{
        session.save(employee1);
        session.save(employee2);
        transaction.commit();
        }catch(Exception e){
            transaction.rollback();
            e.printStackTrace();
        }finally{
            if(session!=null){
                session.close();
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值