我正在尝试 db4o 对象数据库,到目前为止我非常喜欢我所看到的,但我也阅读了关于 stackoverflow db4o 体验的这篇文章?表明并非所有看起来都那么容易的事情都是容易的。
现在,我有一些关于如何在现实世界的应用程序中使用 db4o 的问题。因此,如果您有任何使用 db4o 工作的经验(尤其是在 Web 应用程序环境中),我很想听听他们的意见。
以下是我的问题:
在使用 db4o 存储对象时如何管理对象身份?**
来自 RDBMS 背景,通常每个表都有一个主键/身份列,我现在无法想象如何在 db4o 中管理对象身份。例如,如果我正在使用 NHibernate / mysql 并需要通过 id 查找 User 对象,我将执行 session.Load(primaryKey) ,它将通过其 PK 检索。在表定义中将 PK 定义为自动增量也很常见。
由于 db4o 中没有这样的选项,我的想法是使用 Guid 结构来识别对象数据库中的一些对象。
有什么工具可以查看数据库中存储的对象吗?
db4o 世界中是否有类似 SQL Server Management Studio(可能不太复杂)的东西?我想查看 db 文件中已经存储的数据/对象。
重命名域对象时你搞砸了吗?
据我所知,当您重命名一个类时,数据库中任何以前存储的实例都无法再检索。有没有办法解决这个问题?您如何处理针对已经包含许多对象的实时数据库的更新?
我可以排除保存到数据库的属性吗?
例如,如果一个域对象持有对(无状态)服务对象的引用,那么如果域对象被持久化,那么服务对象也将被持久化,对吗?
至少对我来说,将服务实例保存在数据库中似乎有点奇怪。
您可以将服务实例排除在保存之外吗?如果再次检索域对象,如何确保服务也再次注入实例?