首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate关联关系-多对1

2012-11-01 
hibernate关联关系-多对一多对一关联关系:?模型:员工Employee — 部门Department?package Domainpublic cl

hibernate关联关系-多对一

多对一关联关系:

?

模型:员工Employee — 部门Department

?

package Domain;public class Employee {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;}private int id;private String name;private Department depart;}

?

?

package Domain;import java.util.Set;public class Department {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 Set<Employee> getEmps() {return emps;}public void setEmps(Set<Employee> emps) {this.emps = emps;}private int id;private String name;private Set<Employee> emps ;}

?

?

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="Domain"><class name="Employee" table="employee"><id name="id"><generator /></id><property name="name" unique="true"/><many-to-one name="depart" column="depart_id"/></class></hibernate-mapping>

?

?

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="Domain"><class name="Department" table="department"><id name="id"><generator /></id><property name="name" unique="true"/><set name="emps"><key column="depart_id"/><one-to-many name="code">package Dao;import Domain.Employee;public interface EmployeeDAO {public void saveEmployee(Employee emp);public Employee findEmployeeByName(String name);public Employee findEmployeeById(int id);public void updateEmployee(Employee emp);public void removeEmployee(Employee emp);}

?

?

package Dao;import Domain.Department;public interface DepartmentDAO {public void saveDepartment(Department depart);public Department findDepartmentByName(String name);public Department findDepartmentById(int id);public void updateDepartment(Department depart);public void removeDepartment(Department depart);}

?

?

package Dao.Impl;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import Utils.hibernateUtil;import Dao.EmployeeDAO;import Domain.Employee;public class EmployeeDAOImpl implements EmployeeDAO {// 保存员工public void saveEmployee(Employee emp) {Session s = null;Transaction tx = null;try{s = hibernateUtil.getSession();tx = s.beginTransaction();s.save(emp);tx.commit();}catch (HibernateException e) {if(tx != null){tx.rollback();}throw e;}finally{if(s != null){s.close();}}}// 根据姓名查询员工public Employee findEmployeeByName(String name) {Session s = null ;try{s = hibernateUtil.getSession();String hql = "from Employee as emp where emp.name=:name";Query query = s.createQuery(hql);query.setString("name", name);Employee emp = (Employee) query.uniqueResult();return emp;}finally{if(s != null){s.close();}}}// 根据员工id查询员工public Employee findEmployeeById(int id) {Session s = null ;try{s = hibernateUtil.getSession();Employee emp = (Employee) s.get(Employee.class, id);return emp;}finally{if(s != null){s.close();}}}// 更新员工信息public void updateEmployee(Employee emp) {Session s = null;Transaction tx = null;try{s = hibernateUtil.getSession();tx = s.beginTransaction();s.update(emp);tx.commit();}catch (HibernateException e) {if(tx != null){tx.rollback();}throw e;}finally{if(s != null){s.close();}}}// 删除员工public void removeEmployee(Employee emp) {Session s = null;Transaction tx = null;try{s = hibernateUtil.getSession();tx = s.beginTransaction();s.delete(emp);tx.commit();}catch (HibernateException e) {if(tx != null){tx.rollback();}throw e;}finally{if(s != null){s.close();}}}}

?

?

package Dao.Impl;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import Dao.DepartmentDAO;import Domain.Department;import Utils.hibernateUtil;public class DepartmentDAOImpl implements DepartmentDAO {// 保存部门public void saveDepartment(Department depart) {Session s = null;Transaction tx = null;try{s = hibernateUtil.getSession();tx = s.beginTransaction();s.save(depart);tx.commit();}catch (HibernateException e) {if(tx != null){tx.rollback();}throw e;}finally{if(s != null){s.close();}}}// 根据name查找部门public Department findDepartmentByName(String name) {Session s = null ;try{s = hibernateUtil.getSession();String hql = "from Department as depart where depart.name=:name";Query query = s.createQuery(hql);query.setString("name", name);Department depart = (Department) query.uniqueResult();return depart;}finally{if(s != null){s.close();}}}// 根据id查找部门public Department findDepartmentById(int id) {Session s = null ;try{s = hibernateUtil.getSession();Department depart = (Department) s.get(Department.class, id);return depart;}finally{if(s != null){s.close();}}}// 更新部门public void updateDepartment(Department depart) {Session s = null;Transaction tx = null;try{s = hibernateUtil.getSession();tx = s.beginTransaction();s.update(depart);tx.commit();}catch (HibernateException e) {if(tx != null){tx.rollback();}throw e;}finally{if(s != null){s.close();}}}// 删除部门public void removeDepartment(Department depart) {Session s = null;Transaction tx = null;try{s = hibernateUtil.getSession();tx = s.beginTransaction();s.delete(depart);tx.commit();}catch (HibernateException e) {if(tx != null){tx.rollback();}throw e;}finally{if(s != null){s.close();}}}}

?

?

package Dao.Test;import org.hibernate.Session;import org.hibernate.Transaction;import Utils.hibernateUtil;import Domain.Department;import Domain.Employee;public class Many2OneTest {public static void main(String[] args) {add();}public static Department add(){Session s = null ;Transaction tx = null;try{Department depart = new Department();depart.setName("xuan chuan bu");Employee emp = new Employee();emp.setDepart(depart);// 对象模型,建立两个对象间的关联关系emp.setName("zhang zuoqiang");s = hibernateUtil.getSession();tx = s.beginTransaction();s.save(depart);s.save(emp);tx.commit();return depart;}finally{if(s != null){s.close();}}}}

?

return depart;
} finally {
if (s != null)
s.close();
}
}

static Department add() {
Session s = null;
Transaction tx = null;
try {
Department depart = new Department();
depart.setName("+Manager+");

Employee emp1 = new Employee();
emp1.setDepart(depart);
// 对象模型:建立两个对象的关联
emp1.setName("emp name1");

Employee emp2 = new Employee();
emp2.setDepart(depart);
// 对象模型:建立两个对象的关联
emp2.setName("emp name2");

/*Set<Employee> emps = new HashSet<Employee>();
emps.add(emp1);
emps.add(emp2);
depart.setEmps(emps);*/

s = hibernateUtil.getSession();
tx = s.beginTransaction();

s.save(depart);
s.save(emp1);
s.save(emp2);
System.out.println("-----------------");
tx.commit();

return depart;
} finally {
if (s != null)
s.close();
}
}
}

热点排行