您的位置:首页 > 其它

Hibernate(1)关联映射之一对多

2015-01-19 18:20 106 查看

Hibernate关联映射之一对多,多对一

在昨天,我对于Hibernate还是很不熟悉,虽然之前华信有上过课,但我来的断断续续,只知道Hibernate是对数据库进行操作的。关于对Hibernate的理解我就不说了,百度输入一个Hibernate可以从其起源一直看到用法,那么就说一下,Hibernate关联映射之一对多,多对一关系的理解吧~

举个例子,街道和区县的例子。一个区县可以对应很多个街道,这是一个一对多关系;多条街都是对应在一个区县的,这是一个多对一的关系。那么在代码的实现中,Hibernate关联映射关系怎么实现呢?

先申明一下,两个表:区县(District)、街道(Street)通过映射产生的几个文件:
District.Java District.hbn.xml Street.java Street.hbn.xml

一对多:

图一:District.java(源文件)(未修改)



图二::District.java(已修改)



在这里,大家可以看到,在District.Java中只是添加了一个private Set<Street> streetSet = new HashSet<Street>();不懂的百度,这不是今天的重点。
当然有人会问,为什么要用Set集合,这是由于一个区县对应多条街道,当然要体现出多个,所以得用集合。List集合也是可以的啊,不过要注意的是不是HashSet了,要改成ArrayList<e>();还有就是Set和List的区别注意一下,另外,如果你使用List的话,后面的XML配置文件中也要改成list。

图三:这张是一方也就是例子中的区县方 District 的映射文件(未修改)District.hbn.xml



图四:这是对District的映射文件进行的配置(已修改)District.hbn.xml



大家可以看到图二比图一多了一个关联关系映射<one-to-many> ,在关系映射中,可以看到 name是我在Street.java中添加的一个对象集,class是该对象所在的类。特别注意的是Column,在这里先卖个关子,先看下文。

至此,一对多的关系映射配置完了,可以编写一个main函数来实现通过区县操作(增、删、查、改)所拥有的街道。

文字总结一下,一对多关系设置:(在一方设置)
1、在“一方”定义集合(Set、List)
2、在“一方”的配置文件定义Set集合或者LIst集合。

大家也许有看到我在配置文件中有casecade 和 inverse,你可以暂时先不管,不用添上他们,在我接下来的博文中将会告诉你casecade 和 inverse是干嘛用的,怎么用的。还有之前说的那个Column有什么特别的地方。

THE END。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: