一对一关系映射:

 三,一对一关系映射:

  1,假如是主键一对一用来映射:也就是说被动方的主键是来自于主动方的主键,也可以将之称之为外键:

  类之间相互添加彼此的应用。

  映射文件中主动方,增加一对一标签:

  <one-to-one name="userinfo" cascade="all" class="com.ljh.hibernate.pojo.UserInfo"></one-to-one>

  被动方,主键又是外键,也添加一对一的映射标签:

  <id name="uid" column="uid">

  <generator class="foreign">

  <param name="property">user</param>

  </generator>

  </id>

  <!--

  描述一对一关系关系映射

  constrained="true" : 表示强制要求一对一使用外键关联。增加外键约束。

  -->

  <one-to-one name="user" constrained="true"  class="com.ljh.hibernate.pojo.User"></one-to-one>

  2,使用外键约束,其实是多对一的特殊情况,例如学生对班级,

  类添加彼此的应用。

  映射文件中学生端主动端,添加外键进行约束,添加多对一标签,

  <!--

  unique : 唯一约束

  如果外键含有unique约束,那么表示主动方和被动方的关系为一对一。

  对于一对一映射来讲,可以设置级联关系为delete 和 all

  根据主动方查询被动方关联数据,是支持延迟加载的。

  -->

  <many-to-one name="classes" column="cid" unique="true" cascade="all" class="com.ljh.hibernate.pojo.Classes"></many-to-one>

  班级端的映射文件:添加一对一的标签:

  <one-to-one name="student" cascade="all" property-ref="classes" class="com.ljh.hibernate.pojo.Student"></one-to-one>

  四,多对多的关系,例如学生对课程的对应,在数据库中会生成第三张表进行维护:

  在各自的类中引入对方的set集合,表示多对多。

  学生端:

  <set name="courseSet" table="t_student_course" cascade="save-update">

  <key column="sid"></key>

  <many-to-many class="com.ljh.hibernate.pojo.Course" column="cid"></many-to-many>

  </set>

  课程端:

  <!--

  对于多对多来讲,级联只能设置cascade="save-update"是合理的

  inverse="true" 让集合一端去维护中间表数据。任意一端都可以。

  -->

  <set name="studentSet" table="t_student_course"  cascade="save-update"  inverse="true">

  <key column="cid"></key>

  <many-to-many class="com.ljh.hibernate.pojo.Student" column="sid"></many-to-many>

  </set>

  五,联合主键的映射,这种情况很少见,看一下如何吧,

  出现了这种联合键时,需要我们为其定义一个联合主键的类(实现Serializable接口),类中声明多个字段的属性,表示联合主键字段。

  在配置映射文件时,主键的配置利用联合主键的标签即可:

  composite-id name="id"><key-property name="title"></key-property>

  <key-property name="author"></key-property>

  </composite-id>

  综上,为Hibernate中对数据库进行关联设置映射时的几个简单例子,主要是我们根据实际情况,掌握几个对应标签的使用,还有就是里边的属性的使用。像lazy,cascade,fetch等等。注意观察其中的不同。这样进行了关联设置我们就可以很好的,根据类生成数据库,对数据库中的数据进行关联操作,更加合理化!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值