我以为是时候看看OO数据库,并决定使用db4o作为我的下一个小项目 – 一个小图书馆.
考虑以下对象:Book,Category.
一本书可以是0-n类,一个类可以应用于0-m书.
我的第一个想法是加入一个加入对象,如BookCatecory,但经过一番谷歌搜索,我看到这不适合“真实的OO”.
所以另一个方法(很多人推荐)是在两个对象中有一个列表:Book.categories和Category.books.一方处理关系:Book.addCategory将类别添加到Book.categories和Book to Category.books.在一个方法调用中更改2个对象时,如何处理提交和回滚?
你怎么看?第二种方法有明显的优势,但至少对我来说,第一种“感觉”是正确的(更好的规范).
解决方法
如果使用对象数据库,则不需要关心数据库中的关系如何存储.您定义它们之间的类和关系.请阅读引用到您的数据库的参考.关系的例子:
n:n attribute,referencing from the parent ------------------------------------------------------------------ class Person{ List addresses; } class Address{ } n:n attribute,referencing from the child ------------------------------------------------------------------ class Person{ } class Address{ List persons } n:n attribute,bidirectional references ------------------------------------------------------------------ class Person{ List addresses; } class Address{ List persons }