问题描述
在我看到的 95% 的示例中,人们在他们的域对象中添加了 @Entity
或 @Document
注释。
我想创建一个可以轻松更改持久层的应用程序。
应该可以将设置从 SQL DB
切换到 e.x. MongoDB
等
我想让我的域对象完全独立于持久层。
其中 Item
是域对象。
public interface ItemsRepository {
List<Item> getItems();
}
每个 ItemsRepository
实现都有自己专用的持久层对象。对于 SQL,让我们说 ItemEntity
类,对于 Mongo ItemDocument
类。并且每个持久化对象都有域对象之间的转换。
这样的做法可以接受吗?如果不是,那么解决该问题的最佳行业模式是什么?
解决方法
我认为这是 Dependency Inversion Principle 的一个很好的应用。我这么说并不是为了反驳对这个问题的其他评论,而是要强调从多个角度来看,这种设计似乎是站得住脚的。我often design code bases according to a similar structure。是的,我会说这是完全可以接受的。