Hibernate中关联关系:多对一的学习

 

 员工个部门,站在员工的角度来看,多个员工对应一个部门,是多对一的关系。

表结果如下图所示:

departrnent代表部门,employee代表员工,FK1代表外键,depaet_iddepartrnent表中id的外键。

编写Departnet类和Employee类:

此类包含两个属性,idname.

此类包含两个属性,和一个对Department类的引用。对Department持有引用是为了查询到这个员工以后,可以更清楚的知道他所在部门的信息。

然后编写对应的映射文件,Department类对应的映射文件如下:

Employee类对应的映射文件如下:

Employee中的id,name属性的配置和平常的属性配置是一样的,主要是depart这个属性,这个属性是Department的引用,EmployeeDepartment的关系是多对一的关系,所以用到一个标签:<many-to-one>,代表他们之间的属性是多对一的,此标签的name属性就是Employee类中引用的名字,columu代表对应表中的哪一列。这个时候,depart是一个引用,而depart_id从数据库中取出后会是一个值,怎样对应起来的?

是这样的,根据映射可以知道引用depart对应的是哪个类,根据这个类可以找到对应的映射文件,就是Department类的映射文件,根据这个映射文件可以找到Department的主键,默认的hibernate会将dapart_id的值赋值给Department的主键,也就是Department类中的属性id。如果不想把值赋值给Department的主键可以加入属性"property-ref="name",这样的话就会把depart_id的值付给name属性,但是这样做是不提倡的,因为name不是主键,只是一般的属性,不应该和别的表的属性有什么联系。

最后在hibernate文件中注册这两个映射文件。到现在,关系建立完毕。

下面是怎样保存一个EmployeeDepartment

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值