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();
}
}