Hibernate3.2 多对一学习笔记

案例:
员工对部门 (多对一) many-to-one
1,设计实体模型 Department.java (部门实体), Employee.java(员工实体)
__________________________________
Department.java 代码清单


public class Department {
private int id ; //部门ID
private String name ; //部门名称
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

Employee.java 代码清单:

public class Employee {
private int id ;
private String name ;
private Department depart ; //这里是重点.将此定为Department对象,hibernate加载一个员工对象时就加载了他所在部门的部门所有信息,
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Department getDepart() {
return depart;
}
public void setDepart(Department depart) {
this.depart = depart;
}
}

配置 hbm 文件

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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="org.javaboys.model.Department" >
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String"/>
</class>
</hibernate-mapping>

Employee.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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="org.javaboys.model.Employee" >
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String"/>
<many-to-one name="depart" column="depart_id"/>
</class>
</hibernate-mapping>


编码业务操作类:
Hibernate session工厂


HibernateUtil.java

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public final class HibernateUtil {
private static SessionFactory sessionFactory;
private HibernateUtil(){

}
static{
Configuration cfg = new Configuration().configure();
sessionFactory = cfg.buildSessionFactory();
}
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public static Session getSession(){
return sessionFactory.openSession();
}
}

Many2One.java 多对一例子测试类


import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.javaboys.model.Department;
import org.javaboys.model.Employee;

public class Many2One {

/**
* @param args
*/
public static void main(String[] args) {
add();

Employee e = query(1);

System.out.println(e.getDepart().getName());
}
static Department add(){
Session s = null;
try{
Department depart = new Department();
depart.setName("人事部");
Employee emp = new Employee();
emp.setDepart(depart);
emp.setName("a");
s = HibernateUtil.getSession();
Transaction tx = s.beginTransaction();
s.save(depart);//保存一个部门对象
s.save(emp);//保存员工对象
tx.commit();//事务提交
}finally{
if(s!=null)s.close();
}

return null;
}
//按员工ID查询一个员工对象
static Employee query(int emp_id){
Session s = null;
Employee emp = null;
try{
s = HibernateUtil.getSession();
Transaction tx = s.beginTransaction();
emp = (Employee)s.get(Employee.class, emp_id);
Hibernate.initialize(emp.getDepart());//强制加载会话中的实例,
tx.commit();
}finally{
if(s!=null)s.close();
}

return emp;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值