hibernate关系映射

时间:2014-03-23 16:41:33   收藏:0   阅读:517

关系映射

对象中的关系映射有如下四种,而且分为单向和双向两种,单向和双向的区别主要在java类中才会有区别,在数据库中时没区别的。

其中一对多双向关联和多对一双向关联是一样的。所以总的来说,我们要注意的关系映射有七种。

OneToOne(凡是双向,都要用mappedBy)

单向外键

  在使用annotation进行单向配置的时候,比如存在这么两张表(husband、wife),那么就会存在husband和wife两个类文件,在husband中设置一个wife对象,然后再生成的getter方法前面用@onetoone进行注解,这样就表示进行了单向的关联。要注意,这里生成的外键的名字,也就是在表husband生成的字段的名字为wife属性名_id,如设置的wife属性为wife,那么自动生成的字段为wife_id。这样的操作明显不是我们想要的,如果想要设置成自己想要的字段名,可以在@onetoone下面再用一个新的注解:@joinColumn(name=”wifeId”),这样就表示把应的字段名设置为wifeId。

双向外键

单向主键(不重要)

双向主键(不重要)

单向联合主键(不常用,有印象)

         在这里只是说明用annotation进行的配置。进行配置联合主键的时候,可以新建一个新的联合主键类(wifePK),然后存放对应的字段。在具体的java类(Wife)中用@idClass进行注解。要注意用联合主键的话,要继承serializable接口、重写hashCode和equals方法

         用联合主键进行注解的时候,如果只是简单的使用@JoinColumn是不行的,这里要使用的注解是@JoinColumns,注意查看这个注解的api文档,你会发现返回的是一个JoinColumn的数组,所以使用@JoinColumns这个注解的时候,要传递进去多个@JoinColumn,而且还要说明对应的字段是以哪个属性作为依赖的,用referencedColumnName进行指定。

component组件映射

         当我们进行一对一的操作的时候,往往会发现根本不需要建立两个table,也就是说一个table就可以解决问题了。所以在这里,用component就是把两个java类中的对象映射成一个table的操作

More to One Or One to More

  进行多对一的表映射的时候,一般是在数据比较多的表(如有两个表,group和user,那么就是user表)中添加外键,消除数据冗余,但是要注意,数据表不要和数据库中的关键字重复,如这里的group和user。

M-O单向外键

O-M单向外键

O-M Or M-O双向关联

Many-to-Many

单向外键

双向关联

hibernate关系映射,布布扣,bubuko.com

原文:http://www.cnblogs.com/littleQin/p/3619015.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!