我目前正在编写我的第一个Spring应用程序(Spring boot + hibernate)。我查看了它们文档中的最佳实践目录结构,您可以在这里找到。它有道理。
问题1:
我有一个接口(或抽象类),有几个子类扩展了该接口,因此我只需要为父类添加一个@ Repository。 我决定这样做:
问题1:
我有一个接口(或抽象类),有几个子类扩展了该接口,因此我只需要为父类添加一个@ Repository。 我决定这样做:
com
+- example
+- myapplication
+- Application.java
|
+- message
| +- AbstractMessage.java
| +- IMessageRepository.java
| +- MessageRepositoryImpl.java
+- messageTypeA
| +- messageTypeA.java
| +- messageTypeAService.java
+- messageTypeB
| +- messageTypeB.java
| +- messageTypeBService.java
问题2:
现在我有一个新的实体
需要保存,名为Group
。那么我可以在与Message
同级别的目录中添加一个Group
目录。然而,这个Group
实际上是Message
的一部分(逻辑上),因此如果它是同一个message
目录的一部分,这将是有意义的(唯一的原因是以这种方式保存它们更容易推导出分析)。此外,我甚至使用相同的MessageRepository
来保存它(我只是添加了第二个方法到接口中,如下所示:)。
public interface MessageRepository {
void insert(AbstractMessage message);
void insert(AbstractMessage message, AbstractGroup group);
}
这样的设计是否可行?或者每个实体
都应该有自己的包?我在过度思考吗?
com
+- example
+- myapplication
+- Application.java
|
+- message
| +- AbstractMessage.java
| +- IMessageRepository.java
| +- MessageRepositoryImpl.java
| +- messageTypeA
| +- messageTypeA.java
| +- messageTypeAService.java
| +- messageTypeB
| +- messageTypeB.java
| +- messageTypeBService.java
|
+- group
+- AbstractGroup.java
+- GroupTypeX.java // same service as message, just different entity
+- GroupTypeY.java // same service as message, just different entity
repositories
只应该管理单个对象类型?你所说的单个对象类型是指接口,而不是具体实现,对吗?例如,我的存储库正在管理我的“消息”接口,然后再创建第二个存储库来管理我的“组”接口。而不是为每个具体实现都创建一个repository
。 - Tiberiu