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