我正在尝试使用db4o对象数据库,到目前为止,我很喜欢它所展现的功能,但是我也读到了stackoverflow上的这篇帖子db4o experiences? ,这表明并不是所有看起来简单的事情都是容易的。
现在,我有一些关于如何在真实世界应用程序中使用db4o的问题。因此,如果您有任何使用db4o(特别是在Web应用程序上下文中)的经验,我很想听听您的意见。
以下是我的问题:
在使用db4o存储对象时,如何管理对象标识?**
来自RDBMS背景,通常每个表都有一个主键/标识列,我无法想象如何在db4o中管理对象标识。例如,如果我正在使用NHibernate / mysql开发,并需要按ID查找用户对象,则会执行session.Load(primaryKey),然后将其检索出来。在表定义中,将PK定义为自动递增非常常见。
由于db4o中没有这样的选项,我的想法是使用Guid结构来标识某些对象在对象数据库中的位置。
有哪些工具可以查看db中存储的对象?
在db4o世界中是否有类似SQL Server Management Studio(可能不太复杂)的工具,我想查看已经存储在数据库文件中的数据/对象。
当重命名域对象时, 你会遇到什么问题吗?
据我所知,当您重命名类时,以前存储在数据库中的任何实例将无法再检索。有没有方法可以解决这个问题?如何处理针对包含许多对象的现有数据库的更新?
我可以排除属性被保存到数据库中吗?
例如,如果一个域对象持有对(无状态)服务对象的引用,则如果该域对象被持久化,则服务对象也将被持久化,对吗?
在数据库中保存服务实例似乎有点奇怪,至少对我来说是这样。
你能够排除服务实例被保存吗?如果领域对象再次被检索,如何确保服务也被再次注入实例中?