Mam przykładową encje/obiekt
final class Game {
private UUID uuid;
private String name;
private LocalDateTime startTime;
private List<Bet> bets;
//Dowolne inne pola związane z biznesem
}
i chciałbym mieć jakiś port (z architektury heksagonalnej) do zapisu/odczytu danych. Teraz zaczyna się pytanie: jakie typy powinien taki port przyjmować i zwracać?
Rozwiązania o których myślałem:
- Każdy obiekt biznesowy ma metody
toDTO
,fromDTO
oraz odpowiednie DTO, które przez port jest przekazywane do "zapisania". Wtedy sam obiekt biznesowy nie wystawia na świat informacji o swoim wnętrzu, a obiekt DTO jest dodatkową granicą pomiędzy warstwami. - Obiekt biznesowy jest tylko strukturą danych: gołe pola(mogą być wtedy
public final
), a wszystkie operacje wykonuje wyższa warstwa (przypadków użycia). Wtedy do portu jest przekazywany sam obiekt.
Czy może oba podejścia są błędne i jest jakieś inne, lepsze?