对于后端(JPA)和前端(JSF)之间的数据流,我有点困惑如何正确设置项目
在我上学的时候,我学习了使用DAO(存储库,服务)和DTO的方法,但是实际上,我不再需要使用DTO。这就是为什么我要在这里咨询我如何使用JPA和JSF设置通用框架的原因。
我有以下情况:
实体车:
import javax.persistence.*;
import javax.validation.constraints.Size;
@Entity
@Table(name = "cars")
public class Car {
@Id
@Size(min = 1)
private String identifier;
具有访问数据库的基本功能的存储库:
@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();
}
具有sessionscope的托管bean:
@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定义。
我的汽车实体与另一个实体制造商具有双向关系,可以使用getter方法访问该关系。因此,无需为此创建复合DTO吗?
这是不好的,可以接受的,好的设计吗?您将如何构造2019年的数据流?
答案 0 :(得分:0)
根据JSF和Java EE专家的建议,像Bauke Scholtz How to use DTO in JSF + Spring + Hibernate和Adam Bien How evil are Data Transfer Objects这样的人最好不要使用DTO对象。