在设计数据库时我们会考虑,表与表之间的关系,例如我们前边经常提到的一对一,一对多,多对多关系,在数据库中我们通过外键,第三张表等来实现这些关系。而Hibernate时间实体类和数据库中的表进行的映射,这些关系如何映射呢?这里简单总结一下:
一,一对多,多对一关系映射,这里拿学生和班级进行简单演示:
1,学生的类和对应的映射文件的编写:
private int sid ; private String sname ; private Classes classes ; //,引入班级对象,多对一
2,班级的实体类和对应的映射文件:
private int cid ; private String cname ; private SetstudentSet = new HashSet (); //引入学生类的集合,一对多
二,自关联:就是在自己的类进行关联自己,例如父菜单与子菜单的关系 , 对应的实体类,和映射文件
private int mid ; private String name ; private Set
三,一对一关系映射:
1,假如是主键一对一用来映射:也就是说被动方的主键是来自于主动方的主键,也可以将之称之为外键:
类之间相互添加彼此的应用。
映射文件中主动方,增加一对一标签:
被动方,主键又是外键,也添加一对一的映射标签: user
2 ,使用外键约束,其实是多对一的特殊情况,例如学生对班级,
类添加彼此的应用。
映射文件中学生端主动端,添加外键进行约束,添加多对一标签,
班级端的映射文件:添加一对一的标签:
四,多对多的关系,例如学生对课程的对应,在数据库中会生成第三张表进行维护:
在各自的类中引入对方的set集合,表示多对多。
学生端:
;/set>
课程端:
;/set>
五,联合主键的映射,这种情况很少见,看一下如何吧,
出现了这种联合键时,需要我们为其定义一个联合主键的类(实现Serializable接口),类中声明多个字段的属性,表示联合主键字段。
在配置映射文件时,主键的配置利用联合主键的标签即可:
综上,为 Hibernate中对数据库进行关联设置映射时的几个简单例子,主要是我们根据实际情况,掌握几个对应标签的使用,还有就是里边的属性的使用。像lazy,cascade,fetch等等。注意观察其中的不同。这样进行了关联设置我们就可以很好的,根据类生成数据库,对数据库中的数据进行关联操作,更加合理化!