staram się uzyskać odpowiedzi na dwa dość podobne pytania tutaj:Czy należy przekonwertować obiekt na DTO w obiekcie repozytorium i zwrócić go do warstwy usługi?
Mam konwersji podmiot do DTO wewnątrz repozytorium obiektów i odesłać go do warstwy usługi?
lub
Czy mogę powrócić DTO obiektów z repozytorium warstwy?
W tej chwili utknąłem w moim Servlet (Warstwa Servie), że np. stara się odzyskać wszystkie Restaurant
obiektów z RestaurantOwnerRepository
:
// RestaurantOwnerService (Servlet)
@Override
@Transactional
public List<RestaurantDTO> getAvailableRestaurants() {
List<Restaurant> availableRestaurants = restaurantOwnerRepository.getRestaurants(getSessionId());
return null;
}
gdzie Restaurant
jest @Entity
adnotacją klasa - co wydaje się być pierwszą rzeczą, jaką należy zrobić, ponieważ nie warstwie usług ma teraz wiedzieć o bardzo niskim poziomie obiekt, który imho narusza próbę abstrakcji moich danych w każdej warstwie.
To nie byłoby tak, gdy ja np. przekonwertować każdy Restaurant
na RestaurantDTO
- ale czy powinienem to zrobić?
Zasadniczo zmienić:
// RestaurantOwnerRepository
@Override
public List<Restaurant> getRestaurants(String sessionId) {
RestaurantOwner restaurantOwner = this.get(sessionId);
// .. getting restaurants ..
return availableRestaurants;
}
do
// RestaurantOwnerRepository
@Override
public List<Restaurant> getRestaurants(String sessionId) {
RestaurantOwner restaurantOwner = this.get(sessionId);
// .. getting restaurants ..
return ConvertEntity.convertRestaurants(availableRestaurants);
}
i mają util ConvertEntity
dla każdy podmiot takiego na przykład:
public class ConvertEntity {
public static List<RestaurantDTO> convertRestaurants(List<Restaurant> restaurants) {
// ...
}
}
ale to po prostu nie czuje jak najlepsze rozwiązanie dla mnie .. co co uld Mam tutaj?
Ważne jest, aby wspomnieć byłoby, że to pochodzi tworzą projekt GWT. Oznacza to, że używam np. RestaurantDTO
na serwerze i po stronie klienta, ponieważ jest on zawarty w projekcie współdzielonym.
Twoje drugie pytanie musi być * "Czy można zwrócić ** jednostki ** z warstwy repozytorium?" *, Prawda? Ponadto, czy mógłbyś sprawdzić swoje typy zwrotu? Jestem nieco zdezorientowany, np. w Twoim trzecim fragmencie. – sp00m
Stwórz interfejs DTO i pozwól, aby "Restauracja" go zaimplementował. Podmiot i DTO i tak podzielą większość wdrożenia. –
Po prostu zwróć go do warstwy usługi. – Stefan