假设我有以下课程:
@Entity
public class Book {
...
}
@Repository
public class BookRepositoryImpl implements BookRepository {
...
}
@Service
public class BookServiceImpl implements BookService {
...
}
@Entity
public class Author{
...
}
@Repository
public class AuthorRepositoryImpl implements AuthorRepository {
...
}
@Service
public class AuthorServiceImpl implements AuthorService {
...
}
现在我想和作者一起保存一本书。对于我的 BookService,我以某种方式将 BookDto 传递给除作者之外的所有信息,并作为第二个参数传递作者 ID。现在要保存我的书,我必须组装 Book 实体。哪一层是创建它的正确层?我看到的可能性很少,但我不确定哪种方法是正确的:
- 在 BookingService.createBook 我可以调用 AuthorService.findAuthorById 并使用此组装书,然后将其传递给 BookRepository
- 在 BookingService.createBook 我可以调用 AuthorRepository.findAuthorById 并使用此组装书,然后将其传递给 BookRepository
- 我可以将所有信息传递给存储库并让它处理实体,通过这个创建我的意思是:在 BookingService.createBook 调用 BookRepository.saveBookWithAuthor(Book book, Long authorId) 并且在这个方法中我可以调用 AuthorRepository.findAuthorById 或者我可以调用 AuthorService。 findAuthorById,组装 Book 实体并持久化
哪种方法是正确的,为什么?在我看来,逻辑解决方案是第一个,但是我不喜欢将实体组合与可能在我的服务内部的一些业务逻辑混合在一起的想法。是否有将业务逻辑与技术解决方案分开的模式?