복붙노트

[SPRING] 하나의 객체에서 DTO와 Entity?

SPRING

하나의 객체에서 DTO와 Entity?

나는 현재 딜레마에 빠져 있는데 이것에 관해 읽었습니다.

내 DTO를 내 Entities로 만들고 있습니다. 다음과 같이 보입니다.

@Entity
@PasswordMatches // custom validator
public class User {

    @Id
    @Column
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;

    @Column
    @NotNullOrEmpty // custom validator
    private String password;

    @Transient
    @NotNullOrEmpty // custom validator
    private String confirmPassword;

Q1 : 이것을 받아들이거나 더 좋은 방법이 있습니까? 왜냐하면 현재 사용자를 저장하기 전에 명백한 이유 때문에 암호를 해싱하지만 em.persist (사용자)를 직접 사용하면 @PasswordMatches가 실패하기 때문에 암호가 실패합니다. 유효성 검사를 만족시키기 위해 user.setConfirmPassword (hashedPassword)를 수행 할 때만 절약됩니다. 내가 여기서 옳은 일을하고 있니?

해결법

  1. ==============================

    1.EJB3는 엔티티가 DTO로 사용될 수있는 가능성을 허용했지만 실제로는 별도의 DTO를 갖는 것이 더 좋습니다.

    EJB3는 엔티티가 DTO로 사용될 수있는 가능성을 허용했지만 실제로는 별도의 DTO를 갖는 것이 더 좋습니다.

    조만간 엔티티가 엔티티를 퍼시스턴스 계층에 묶을 특정 JPA 프로 바이더 (예 : Hibernate)와 관련된 주석을 요구한다는 것을 알게 될 것입니다. 즉, 엔터티가 프레젠테이션 계층에 전달되면 해당 계층은 지속성 계층에서 사용중인 특정 라이브러리 / 프레임 워크에 대해 '알아야'합니다. 웹용 콘텐츠를 만드는 경우 문제가 많지 않지만 풍부한 고객 (예 : 스윙)을 수행하는 경우 고객이 휴대해야하는 추가 수하물이 될 수 있습니다.

    마찬가지로 프레젠테이션 레이어에 대한 엔티티에 주석을 달기를 원할 것입니다 (예 : @Json 주석 사용). 이것을 엔티티에 추가하면 퍼시스턴스 계층이 다시 프레젠테이션 계층에 연결됩니다.

    처음에는 엔티티를 사용하여 풍부한 고객에게 데이터를 전달하는 함정에 빠졌지 만 DTO 및 지속성 엔티티로 구분해야 할 때까지 300 개가 넘는 Entity 클래스를 만들었습니다. 많은 엔티티에서 그렇게하는 것은 힘든 경험 이었지만 지금은 (400 개가 넘는 엔티티 클래스로) 우리가 해내었기 때문에 기쁩니다.

    따라서 수행중인 작업을 수행하는 것이 허용되지만 비즈니스 논리를 지속성 계층과 혼합하면 문제가 발생하는 문제가 이미 발생했습니다. 앞으로 DTO 나 Entities로 분리 해두는 것이 좋습니다.

  2. ==============================

    2.단기적으로 볼 때, 이는 생산적으로 보이며 빠르게 일을 처리하는 데 도움이됩니다.

    단기적으로 볼 때, 이는 생산적으로 보이며 빠르게 일을 처리하는 데 도움이됩니다.

    장기적으로 DTO와 엔티티를 분리하는 것이 항상 좋습니다.

    엔티티 간의 관계가 커짐에 따라 하나의 엔티티를 가져 오면 해당 엔티티를 필요로하지 않을지라도 하위 엔티티도 가져올 수 있다는 것을 알 수 있습니다. DTO는 비즈니스 유스 케이스에서 숨겨진 기본 엔터티를 유지하는 데 필요한 방식으로 데이터베이스 쿼리를 최적화하는 데 도움이됩니다.

  3. ==============================

    3.답은 사용 사례에 따라 다릅니다. 이러한 요인을 고려하십시오.

    답은 사용 사례에 따라 다릅니다. 이러한 요인을 고려하십시오.

  4. from https://stackoverflow.com/questions/31165016/dto-and-entity-in-one-object by cc-by-sa and MIT license