애플리케이션 서비스에서는 영속성 기능을 사용하기 위해서 포트 인터페이스를 호출영속성 어댑터의 책임입력을 받는다.입력을 데이터베이스 포맷으로 매핑한다.입력을 데이터베이스로 보낸다.데이터베이스 출력을 애플리케이션 포맷으로 매핑한다.출력을 반환한다.입력 모델은 인터페이스가 정한 도메인 엔티티나 특정 데이터베이스 연산 전용 객체영속성 어댑터는 데이터베이스를 쿼리하거나 변경하는 데 사용할 수 있는 포맷으로 입력 모델을 매핑데이터베이스 응답을 포트에 정의된 출력 모델로 매핑해서 반환출력 모델은 영속성 어댑터가 아니라 애플리케이션 코어에 위치함포트 인터페이스 나누기일반적으로 특정 엔티티가 필요로 하는 모든 데이터베이스 연산을 하나의 레포지토리 인터페이스에 넣어 두는 것이 일반적인 방법이렇게 하는 경우 각 서비스는 레..
JPA
개요spring JPA에서 MySQL skip locked를 활용한 성능 최적화 방법 설명선착순 쿠폰 발급 상황에서의 동시성 이슈를 고려하여 최적화MYSQL skip locked 관련 내용 ERD 하나의 쿠폰 테이블에서 모든 쿠폰 정보를 관리 새로운 쿠폰이 추가되면 새로운 쿠폰명/쿠폰타입으로 테이블에 데이터를 append하는 방식 유저ID가 NULL인 필드는 아직 발급되지 않은 쿠폰을 의미 JPA EntityUser Entity@Entity @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(n..