读书人

hibernate入门(5):多对一

发布时间: 2012-10-27 10:42:26 作者: rapoo

hibernate入门(五):多对一
1.多对一关系映射:

一个部门有可以有多个员工,而一个员工只属于一个部门。从员工角度看,很多员工会隶属一个部门。 现以实例说明,实例概要:一个部门类,只有id和部门名称两个属性。有一个员工类,有id和员工名称及部门对象三个属性。操作步骤如下:

>>步骤一,建立Depatment.java及实体配置文件:


以上的操作,没的什么可多言的,和前面的配置是一样的形式。

>>步骤二,Employee.java内容如下及实体配置文件


先来说这个类文件,它的一个重要属性就是Department对象,这就是它所关联的一个外键,这里我们只必须记住一点,每个实体类对应于一张表,如果一张表想关联另一张表,则只需要在这张表所对应的实体类中引入它想关联表的实体类对象。再进行简单的配置即可。再来看配置文件,这里主要看这个<many-to-one name="depart" column="depart_id"></many-to-one>元素,它的name属性仍然是实体类中的属性。column为对应表的外键。可以留意下数据库表中的相关表。

>>修改主配置文件,增加以下内容以便找到相应的实体配置文件。

<mapping resource="com/dep/emp/Employee.hbm.xml"/>

<mapping resource="com/dep/emp/Depart.hbm.xml"/>

>>步骤四,编写测试类。类中省略导入包的内容。


>>步骤五,再探查询方法。接上面,在测试类中增加一个查询方法,内容如下:


随后再在主方法中增加如下内容:便可以测试结果:
query(1);

对结果的说明分析:如果在以往的JDBC操作中,我们想得到这个部门的信息,需要查两次才能得到,这里的 Hibernate就实现了这一优化,如果我们开启了控制台的数据库显示功能(主配置文件中开启,前面已提到),便可以查看下数据库的执行操作,并切实感受到这里实际执行了两步查询操作,在以后的操作中,建议开启此属性,以便切实体会数据库操作。

>>步骤六,增加一个新的查询方法query2,内容如下,注意和query区别:
Employee emp = query2(1);     System.out.println(emp.getDepart().getName());  


读书人网 >软件架构设计

热点推荐