hibernate —— 注解

hibernate —— 注解

注解举例 一对多 多对一

---------------Employee.java-----------------

package com.huarui.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@Entity
public class Employee {
    @Id
    @GeneratedValue
    private Integer empId;
    @Column
    private String empName;
    //一个员工一定属于一个部门,或者很多员工属于一个部门
    //fetch=FetchType.LAZY属性表示在多的那一方通过延迟加载的方式加载对象(默认不是延迟加载)
    @ManyToOne(fetch=FetchType.EAGER)
    //表示外键的名字
    @JoinColumn(name="depId")
    private Department department;
    
    public Integer getEmpId() {
        return empId;
    }
    
    public void setEmpId(Integer empId) {
        this.empId = empId;
    }
    public String getEmpName() {
        return empName;
    }
    
    public void setEmpName(String empName) {
        this.empName = empName;
    }
    public Department getDepartment() {
        return department;
    }
    public void setDepartment(Department department) {
        this.department = department;
    }
    @Override
    public String toString() {
        return "Employee [empId=" + empId + ", empName=" + empName + ", department=" + department + "]";
    }
}

-----------Department.java-----------------


package com.huarui.entity;

import java.util.HashSet;

import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
//注意 这里只会改变表明的长度  无论是否大小写,到数据库中的表名字都是小写的
@Entity
public class Department {
    @Id
    @GeneratedValue
    private Integer  depId;
    @Column(length=8)
    private String depName;
    //一个部门有多个员工
    @OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
    @JoinColumn(name="depId")
    private Set<Employee> employee =new HashSet<Employee>();
    
    
    public Set<Employee> getEmployee() {
        return employee;
    }
    public void setEmployee(Set<Employee> employee) {
        this.employee = employee;
    }
    public Integer getDepId() {
        return depId;
    }
    public void setDepId(Integer depId) {
        this.depId = depId;
    }
    public String getDepName() {
        return depName;
    }
    public void setDepName(String depName) {
        this.depName = depName;
    }
}

-----------hibernate.cfg.xml-----------

!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <!--数据库前言 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!--连接数据库 -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql:///test</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">123456</property>
        <!--建表 -->
        <property name="hbm2ddl.auto">update</property>
        <!--控制台打印sql语句 -->
        <property name="show_sql">true</property>
        <!--格式化sql -->
        <property name="format_sql">true</property>
        <!--关联映射 -->
         <mapping class="com.huarui.entity.Employee"/>
           <mapping class="com.huarui.entity.Department"/>

    </session-factory>
</hibernate-configuration>

-------------测试--------------------

@Test
    public void save1() {
        // 创建session
        Session session = SessionFactoryUtil.getSessionFactory().openSession();
        // 创建对象
        Department department = new Department();
        department.setDepName("市场部");

        Employee employee = new Employee();
        employee.setEmpName("李牧哈");

        Employee employee1 = new Employee();
        employee1.setEmpName("张泽志");

        Employee employee2 = new Employee();
        employee2.setEmpName("陈晓峰");
        // 建立联系
        employee.setDepartment(department);
        employee1.setDepartment(department);
        employee2.setDepartment(department);
        // 开启事务
        session.beginTransaction();
        // 保存对象
        try {
            // 执行保存
            session.save(department);
            session.save(employee);
            session.save(employee1);
            session.save(employee2);
            // 提交事务
            session.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
            session.getTransaction().rollback();
        } finally {
            // 关闭session
            session.close();
        }
    }