用于保存JPA域对象的良好设计

时间:2009-12-24 17:20:55

标签: java database design-patterns postgresql jpa

我有一个域对象,用于存储一些元数据和一些原始字节。这用于存储二进制对象,如PDF文档和图像。

我想将元数据保存在数据库中,以便可以轻松查询,但出于性能原因,我希望将原始字节存储在文件系统中。实现这一目标的好设计是什么?

我是否应该使用自己的DAO表示原始字节的域对象来执行CRUD,还有一个单独的JPA DAO对元数据执行相同的操作?

如果是这种情况,元数据的域对象是否包含对标记为瞬态的原始字节对象的引用,那么JPA不会尝试保留它?

我是否遵循过于复杂的设计,而不是在数据库中存储原始字节的好处?我正在使用PostgreSQL 8.x,如果这有所不同。

非常感谢。

1 个答案:

答案 0 :(得分:1)

我真的不会这样做。你有没有测量过所谓的性能?您将如何维护数据库中的数据与文件系统上的数据之间的事务性。例如你打算写文件系统,写入数据库,如果失败,那么回滚你的文件系统更改(这不像简单地删除文件那么容易 - 你有二进制数据的先前版本吗?)。如何管理数据库备份等并保持一致?我强烈建议将所有数据保存在一个地方。

既然你在谈论存储PDF等,也许你需要一个document management system