使用DTO已经过时了JPA和JSF

问题描述 投票:-1回答:1

我对如何正确设置项目有关Backend(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年的数据流?

jpa jsf design-patterns
1个回答
0
投票

继JSF和Java EE专家建议像Bauke Scholtz How to use DTO in JSF + Spring + Hibernate和Adam Bien How evil are Data Transfer Objects一样,最好不要使用DTO对象。

© www.soinside.com 2019 - 2024. All rights reserved.