Я немного запутался, как правильно настроить проект относительно потока данных между Backend (JPA) и Frontend (JSF)
В старое школьное время я учился использовать DAO (Repository, Service) и DTO, но на самом делеЯ больше не вижу необходимости использовать DTO.Вот почему я прошу здесь проконсультироваться со мной, как настроить общую платформу с использованием JPA и JSF.
У меня следующая ситуация:
Автомобиль Entity:
import javax.persistence.*;
import javax.validation.constraints.Size;
@Entity
@Table(name = "cars")
public class Car {
@Id
@Size(min = 1)
private String identifier;
a Репозиторий с основными функциями доступа к БД:
@Stateless
public class CarRepository implements Serializable {
@PersistenceContext
private EntityManager entityManager;
public List<Car> getAllCars(){
Query q = entityManager.createQuery("Select c from Car c");
return q.getResultList();
}
управляемый компонент с сессионной областью:
@ManagedBean(name = "carlistbean")
@SessionScoped
public class CarListBean implements Serializable {
private List<Car> cars= new ArrayList();
@PostConstruct
public void init(){
cars = carRepository.getAllCars();
}
В моем лицевом листе я ссылаюсь на автомобили:
<h:dataTable value = "#{carlistbean.cars}" var = "car"
Как видите, я пропускаю часть DTO (для моего понимания), но другим способом я "смешиваю" определения Beanvalidation и JPA в Entity.
My Car Entity имеет двунаправленное отношение к другомуПроизводитель сущности, к которому я могу получить доступ, используя метод getter.Так что для этого не нужно создавать составной DTO?
Это плохой, приемлемый, хороший дизайн?Как бы вы структурировали поток данных в 2019 году?