개발/JPA(3)
-
[JPA] @ManyToOne, @OneToMany 이해하기
테이블 구조 지난 포스팅에 이어 @ManyToOne과 @OneToMany에 대해서 예시 코드를 작성한다. 은행 서비스에서 사용자(User)가 1개 이상의 계좌(Account)를 가질수 있다면 아래처럼 물리 테이블을 설계할것이다. TABLE_USER 입장에서 보면 OneToMany이고, TABLE_ACCOUNT 입장에서 보면 ManyToOne이다. @ManyToOne 단방향 TABLE_ACCOUNT 테이블에 존재하는 user_id 컬럼을 통해 Account Entity에 있는 user 필드의 정보를 채운다. 여러개의 계좌가 사용자 한명에게 사용될수 있으므로 @ManyToOne 어노테이션을 추가한다. 연관관계의 주인임을 나타내고 물리 테이블에 있는 user_id 컬럼을 통해 user 필드를 채우기 위해 @J..
2021.11.29 -
[JPA] mappedBy 이해하기
샘플 코드를 통해 mappedBy에 대해 이해한다. ( 잘못 설명된 부분 있으면 댓글 달아주세요 ) 테이블 구조 이전 포스팅과 같이 테이블을 설계했다. 이전 포스팅에서 User Entity의 portfolio 필드에 @OneToOne 옵션을 추가함으로써 사용자 정보 호출시 포트폴리오 정보도 함께 조회할 수 있도록 했다. 이번엔 반대로 포트폴리오 정보 호출시 사용자 정보를 함께 호출 할수 있도록 해보자. 핵심은 TABLE_PORTFOLIO 테이블에 user_id라는 PK 컬럼을 만들지 않는다는 것이다. @OneToOne 추가 먼저 Portfolio Entity에 User 클래스 타입의 필드를 추가한다. Portfolio Entity와 User Entity는 1대1 관계를 가지므로 @OneToOne 어노테이..
2021.11.16 -
[JPA] 단방향 @OneToOne , @JoinColumn
물리테이블 설계 예시로 자산 포트폴리오 관리를 위한 서비스를 구현하고자 한다. 이상하긴 하지만 "사용자는 하나의 포트폴리오만 만들수 있다." 라는 요구사항이 있다고 했을때 아래와 같은 물리테이블을 생성할것이다. 위같은 테이블간의 관계는 소스코드상에서 어떻게 코딩할까? 테이블의 컬럼과 같도록 Entity 필드 맞추기 첫번째 방법으로는 테이블과 똑같이 필드를 구성하는것이다. 위 방법은 Entity의 필드와 Table의 컬럼이 동일하기때문에 이해하기 쉽다는 장점이 있다. 하지만 User별 Portfolio 정보를 가져오는 경우처럼 테이블간의 연관관계를 통한 데이터 접근을 수행하려고 할때 다소 번거로운 코드를 작성해야하는 단점이 있다. ( User Entity 정보를 가져와서 Portfolio Entity를 다..
2021.11.11