论坛首页 Java企业应用论坛

Hibernate中的各种关系小结

浏览 5258 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2003-09-25  
灵活的关系映射是Hibernate的优点。

我把众多的关系分成两大类:类与表关系, 类之间关系
一般的ORM都会有一对一,一对多,多对多关系,它指的是类之间的关系或表之间关系。一对一通过共享同一个primary key, 一对多,通过foreign key, 多对多通过关联表实现。当然,我们也可以把一对一当成special的一对多。多对多分成两个一对多关系。以上说的是在数据库中的实现, 在类中,我们是用引用或collection容器实现。

类之间关系还包括:自嵌套(self nested),子类(subclass),组件(component),联合子类(joined subclass)

1.只在数据库中与父表映射成一张表的有:component, self nested
2.数据库中与父表映射成不同的两张表的有:joined subclass (could be reusable)
3. subclass 即与父表映射成一张表, 也可以与父表映射成不同的两张表。一张表的话,是把所有的hierarchy全放在一张表中,多表的话是把每一个subclass映射成一张表.


类与表关系有:
一类对多表, 一表对多类

Hibernate在实现一表对多类时非常灵活,但一类对多表还不行,尽管我们也可以通过classpersistence来实现,但也仅仅是动态的映射了一表对多类的情况而已, For example, dynamicly map current table or history table.

一表对多类,也就是我上面所说的
"类之间关系component, self nested“
通过这类之间关系来实现一表对多类的情况。

还有一种关系是单向与双向关系,它仅仅表示类之间相互引用的情况, 在数据库表之间只能是一种双向关系,这是数据库本身的限制。单向与双向关系可以与上面谈到的关系混合使用,其目的也是从OO角度去考虑的。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics