和one to one 一样,首先写了两个实体类Department(private int deptid;private String dname;private String location;
private Set<Employee> employees;)和Employee(private int empid;private String ename;private Department dept;)生成get,set方法,
然后同样配置实体类的映射文件Department.hbm.xml和Employee.hbm.xml。
代码:
----------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" >
<hibernate-mapping>
<class name="cn.hdu.entity.Department" table="DEPARTMENT">
<id name="deptid" column="DEPTID">
<generator class="sequence"><param name="sequence">dept_sequence</param></generator>
</id>
<property name="dname" column="DNAME"></property>
<property name="location" column="LOCATION"></property>
<set name="employees" cascade="save-update" lazy="false">
<key column="DEPTID"></key>
<one-to-many class="cn.hdu.entity.Employee"/>
</set>
</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" >
<hibernate-mapping>
<class name="cn.hdu.entity.Employee" table="EMPLOYEE">
<id name="empid" column="EMPID">
<generator class="sequence"><param name="sequence">emp_sequence</param></generator>
</id>
<property name="ename" column="ENAME"></property>
<many-to-one name="dept" column="DEPTID" class="cn.hdu.entity.Department" lazy="false"></many-to-one>
</class>
</hibernate-mapping>
注意:属性的解释大多同于 one to one例子(详见Hibernate one to one配置),这里面说下为什么要用set:set代表把整个employees对象装入其中,
之后many to one对应于Department dept.deptid,或者说对应于表Department中DEPTID字段,而one to many代表表Department中DEPTID字段对应于相应的表emplooy一条或者多条记录
做完映射之后同样不要忘记把映射文件写入hibernate.cfg.xml;
代码:
<session-factory>
.........
<property name="show_sql">true</property>
<mapping resource="cn/hdu/entity/Department.hbm.xml" />
<mapping resource="cn/hdu/entity/Employee.hbm.xml" />
</session-factory>
其中show_sql ..true;代表执行时输出sql语句。
之后写一个实现类
public class ServiceImp {
public Employee geteEmployeeByName(String name){
Employee employee = new Employee();
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery("from Employee
where ename='"+name+"'");
employee=(Employee) query.list().get(0);
HibernateSessionFactory.closeSession();
return employee;
}
}
测试类:
public class TestDepartment {
public static void main(String[] args) {
ServiceImp service = new ServiceImp();
Department dept=new Department();
Employee emp=new Employee();
emp=service.geteEmployeeByName("zhang");
System.out.print(emp.getDept().getLocation());
}
Hibernate one to many(many to one)(转)
最新推荐文章于 2024-08-05 16:50:24 发布