KATEKEITH / TIL_log

πŸ“š Today I Learned.
0 stars 0 forks source link

Layered Architecture vs Hexagonal Architecture vs Microservices Architecture #27

Open KATEKEITH opened 10 months ago

KATEKEITH commented 10 months ago

image

* Layered Architecture 의 단점 1 - 데이터 κ΄€μ μ˜ 사고방식을 μœ λ°œν•œλ‹€.

@Entity
@Builder
@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Point implements Serializable {

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

    // μœ μ € 아이디
    private String userId;

    // μƒν’ˆ 아이디
    private Long productId;

    // μƒνƒœ
    @Enumerated(EnumType.STRING)
    private Status status;

    @Setter
    @ColumnDefault("0")
    private String amount;

    // 유효 κΈ°κ°„
    @Column
    private LocalDateTime expireDate;

    @Getter
    @RequiredArgsConstructor
    public enum Status {
        ACTIVE("ν™œμ„±ν™”"), INACTIVE("λΉ„ν™”μ„±ν™”");

        private final String description;
    }

    @Builder
    public Point(String userId, Long productId, String amount) {
        this.userId = userId;
        this.productId = productId;
        this.amount = amount;
        this.status = Status.ACTIVE;
        this.expireDate = LocalDateTime.now().plusYears(1);
    }

    public Point setInactive() {
        status = Status.INACTIVE;
        return this;
    }

}

도메인 λ ˆμ΄μ–΄μ— μœ„μΉ˜ν•  수 μžˆλŠ”κ°€?

λ§Œμ•½ JPAλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμ—ˆλŠ”λ° JDBC둜 λ³€κ²½ν•˜κ³  μ‹Άλ‹€λ©΄?

도메인은 μΈν”„λΌμŠ€νŠΈλŸ­μ²˜λ₯Ό 바라보고 있기 λ•Œλ¬Έμ— μΈν”„λΌμŠ€νŠΈλŸ­μ²˜κ°€ λ³€κ²½λœλ‹€ν•΄λ„ 도메인은 λ³€κ²½λ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€.

μ˜μ†μ„± 계측에 ν¬ν•¨λ˜κ³  μ΄λŠ” μΈν”„λΌμŠ€νŠΈλŸ­μ²˜ λ ˆμ΄μ–΄μ—μ„œλ„ 도메인에 κ°€κΉŒμš΄ μͺ½μ— μœ„μΉ˜ν•œλ‹€.

https://idkbj.tistory.com/127

https://stackoverflow.com/questions/2516329/is-it-possible-to-build-a-jpa-entity-by-extending-a-pojo