3210439.log
로그인
3210439.log
로그인
도메인 주도 개발 시작하기 리포지터리와 모델 구현 ch4
김종완
·
2023년 10월 29일
팔로우
1
DDD
도메인 주도 개발 시작하기
1
도메인 주도 개발 시작하기
목록 보기
4/11
리포지터리와 모델 구현
JPA를 이용한 리포지터리 구현
모듈 위치
리포지터리를 구현한 클래스는 인프라스트럭처 영역에 속한다.
리포지터리 구현 클래스를 인프라스트럭처 영역에 위치 시켜서 인프라스트럭처에 대한 의존을 낮춰야 한다.
리포지터리 저장 기능
리포지토리의 save() 메소드에 매개변수로 저장할 엔티티 전달
리포지터리 조회 기능
리턴 타입은 Optional 혹은 해당 객체 사용 가능
식별자를 이용한 조회 -> findById(id)
특정 컬럼을 통한 조회 -> findBy컬럼(컬럼 변수)
Criteria 를 이용해 조회
JPQL을 이용해 조회
리포지터리 업데이트 기능
트랜잭션 범위에서 변경한 데이터를 자동으로 DB 반영
리포지터리 삭제 기능
EntityManager의 remove() 메서드를 이용해 삭제 기능 구현
엔티티와 밸류 매핑에 사용되는 어노테이션
@Entity : 객체를 엔티티로 선언하는 데 사용된다.
@Table : 엔티티를 매핑할 테이블을 지정하는 데 사용된다. 해당 엔티티는 주로 db에 저장될 table의 이름을 변경하기위해 사용되는 듯 하다.
@Embeddable : 값 타입을 선언하는 데 사용된다. 값 타입은 식별자가 없고 값만 저장하는 타입이다.
@Embedded : 엔티티 클래스에서 값 타입의 변수를 사용하기 위해 해당 변수에 @Embedded 어노테이션을 붙여서 해당 변수가 임베디드 타입임을 알린다.
@AttributeOverride : 하나의 임베디드 타입 속성과 테이블의 컬럼을 매핑하는 방법을 재정의하는데 사용된다.
밸류 컬렉션 매핑
별도 테이블에 매핑
다음의 어노테이션을 사용하여 별도의 테이블에 매핑
@ElementCollection
@CollectionTable
엔티티 테이블에 매핑
다음의 어노테이션을 사용하여 엔티티 테이블에 매핑
@ElementCollection
@OrderColumn
@ElementCollection
엔티티에 벨류 컬렉션을 사용하는 데 사용되는 어노테이션이다.
밸류 컬렉션의 타입을 지정할 수 있다.
벨류 컬렉션의 기본 키를 지정할 수 있다.
@CollectionTable
벨류 컬렉션을 매핑할 테이블을 지정하는 데 사용되는 어노테이션이다.
테이블 이름을 지정할 수 있다.
부모 테이블과의 관계를 지정할 수 있다.
@OrderColumn
벨류 컬렉션의 순서를 저장할 컬럼을 지정하는 데 사용되는 어노테이션이다.
컬럼 이름을 지정할 수 있다.
컬럼의 데이터 타입을 지정할 수 있다.
김종완
개발에 재미를 느끼며 꾸준히 성장하는 개발자 김종완 입니다.
팔로우
이전 포스트
도메인 주도 개발 시작하기 애그리거트 ch3
다음 포스트
도메인 주도 개발 시작하기 스프링 데이터 JPA를 이용한 조회 기능 ch5
0개의 댓글
댓글 작성