¿Debo convertir una entidad en un DTO dentro de un objeto Repository y devolverlo a la capa de servicio?

Estoy tratando de obtener una respuesta a las dos preguntas bastante similares aquí:

¿Debo convertir una entidad en un DTO dentro de un objeto Repository y devolverlo a la Capa de servicio?

o

¿Está bien devolver objetos DTO de la capa de repositorio?

En este momento estoy atascado en mi Servlet (Servie Layer) que p. intenta recuperar todoRestaurant objetos de unRestaurantOwnerRepository:

// RestaurantOwnerService (Servlet)

@Override
@Transactional
public List<RestaurantDTO> getAvailableRestaurants() {

    List<Restaurant> availableRestaurants = restaurantOwnerRepository.getRestaurants(getSessionId());

    return null;
}

dóndeRestaurant es un@Entity clase anotada, que parece ser lo primero que no debo hacer porque la capa de servicio ahora sabe acerca de un objeto de muy bajo nivel que, en mi opinión, viola el intento de abstraer mis datos en cada capa.

Ese no sería el caso si yo p. convertido cadaRestaurant a unRestaurantDTO - pero debería hacer eso?

Básicamente cambiar:

// RestaurantOwnerRepository

@Override
public List<Restaurant> getRestaurants(String sessionId) {

    RestaurantOwner restaurantOwner = this.get(sessionId);

    // .. getting restaurants ..

    return availableRestaurants;
}

a

// RestaurantOwnerRepository

@Override
public List<Restaurant> getRestaurants(String sessionId) {

    RestaurantOwner restaurantOwner = this.get(sessionId);

    // .. getting restaurants ..

    return ConvertEntity.convertRestaurants(availableRestaurants);
}

y tener una utilidadConvertEntity paracada entidad como esta por ejemplo:

public class ConvertEntity {

    public static List<RestaurantDTO> convertRestaurants(List<Restaurant> restaurants) {
        // ...
    }

}

pero esto no me parece la mejor solución ... ¿qué podría hacer aquí?

Una cosa importante para mencionar sería que esto viene de un proyecto GWT. Eso significa que estoy usando p.RestaurantDTO en el servidor y en el lado del cliente, ya que está contenido dentro de uncompartido proyecto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta