
객체의 상속관계를 테이블로 어떻게 표현할 수 있는 알아봅시다. 1. 슈퍼 타입, 서버 타입관계형 데이터베이스에서는 객체지향 언어에서 다루는 상속이라는 개념이 없습니다. 대신 슈퍼 타입 서브 타입 관계라는 모델링 기법이 있는데, 이것이 객체의 상속과 유사한 방법입니다. 슈퍼 타입 서브 타입 관계를 실제 테이블로 구현하기 위해서 3가지 방법이 있습니다. 1. 조인 전략 2. 단일 테이블 전략 3. 구현 클래스마다 테이블 전략 각각의 전략에 대해서 자세하게 알아보도록 하겠습니다. 2. 조인 전략 조인 전략은 부모 클래스는 물론이고 부모 클래스를 상속받는 자식 클래스들까지 각각의 테이블로 변환하는 전략입니다. 예시를 통해 자세하게 설명드리도록 하겠습니다. 상품을 위한 Item 클래스가 있고 이를 상속 ..

다양한 연관관계에 대해 알아봅시다.연관관계를 매핑할 때 고려해야 할 사항이 3가지가 있습니다. 방향(단방향, 양방향)연관관계의 주인다중성앞서서 방향과 연관관계의 주인에 대해 다뤘음으로 바로 다중성에 대해 알아보도록 하겠습니다. 1. 다중성이란?JPA는 객체를 테이블에 매핑하기 위해서 다양한 어노테이션을 활용하는데, 이 중에서 다중성과 관련있는 어노테이션은 아래와 같습니다. @ManyToOne: 다대일@OneToMany: 일대다@OneToOne: 일대일@ManyToMany: 다대다다중성은 각각 자신의 속성에 대칭성을 가지는데, 예를 들어 Team -> Member 가 일대다일 경우 Memebr->Team은 다대일입니다. 2. @ManyToOne(다대일)단방향 [N:1]가장 많이 사용하는 연관관계로, ..

1. 연관관계의 주인 왜 필요해?양방향 연관관계를 맺을 때 FK 관리의 주체인 연관관계의 주인에 대해 알아보도록 하겠습니다. 우선, 이전 포스팅에서 진행했던 객체 모델링을 보도록 하겠습니다. 우리가 Team -> Member 를 조회하기 위해 members를 추가하며 양방향 연관관계를 맺었습니다. 하지만 엄밀히 말하면 객체에는 양방향 연관관계라는 것이 없습니다. 서로 다른 단방향 연관관계 2개를 묶어서 양방향 연관관계인 것처럼 보이게 할 뿐입니다. 반면 테이블에서는 외래 키 하나로 양방향 연관관계를 맺습니다. 👉🏻 객체의 참조는 둘인데 외래 키는 하나입니다. 이 둘 사이의 차이가 발생합니다. 이 차이를 해결하기 위해 JPA에서는 연관관계의 주인이라는 개념을 도입했습니다. 두 객체 연관관..

이전 포스팅에서 단방향 연관관계에 대해서 다룬 적이 있습니다. 이번에는 양방향 연관관계에 대해 다뤄보도록 하겠습니다. 1. 연관관계 매핑회원과 팀이 있다고 가정하면 회원은 특정 팀에 속할 수 있고, 팀은 여러 회원을 가질 수 있습니다. 이 둘의 관계를 객체와 테이블로 나타내보도록 하겠습니다.단방향 연관관계와는 다르게 양방향 연관관계를 위해 Team에 필드를 추가했습니다. 테이블 연관관계는 단방향 연관관계 때와 동일합니다. 테이블 연관관계에서는 FK로 연관관계를 맺기 때문에 항상 양방향 관계라고 볼 수 있습니다. 👀 객체 연관관계 VS 테이블 연관관계테이블에서는 외래 키로 테이블들과의 연관관계를 맺기 때문에 항상 양방향 관계입니다. 객체는 위 예시처럼 양방향으로 만들고 싶다면 반대 객체에도 필드..

1. 연관관계 매핑엔티티들은 대부분 다른 엔티티와 연관관계들이 있습니다. 예를 들어, 회원과 팀이 있다고 가정하면 회원은 특정 팀에 속할 수 있고, 팀은 여러 회원을 가질 수 있습니다. 이 둘의 관계를 객체와 테이블로 어떻게 나타내는지 살펴봅시다. Member 객체가 Team 객체를 참조하기 위해서는 teamId가 아닌 Team 객체를 참조(주소)로 관계를 맺습니다. 반면, 테이블은 teamId를 이용해서 외래 키를 사용해 관계를 맺습니다. 👉🏻 객체의 참조와 테이블의 외래 키를 매핑하는 것을 JPA를 이용해 어떻게 표현하는지 알아보도록 하겠습니다. 우선 위 사진에서 객체 모델링한 것을 코드로 표현해 보도록 하겠습니다. @Entity@NoArgsConstructor..

회원 관리 시스템은 로그인과 회원가입 기능을 중심으로 구성됩니다. 이 두 가지 핵심 기능은 사용자의 편의성과 보안을 모두 고려해야 한다는 점입니다. 이번 프로젝트에서 로그인과 회원가입 기능을 맡게 되면서, 보안적인 측면에 대해 정리하고자 합니다. 로그인, 회원가입 기능을 만들고자 했을 때 쿠키, 세션, 토큰, JWT과 같은 단어를 많이 볼 수 있을 것이다.이번 포스팅에서는 쿠키, 세션, 토큰에는 어떤 차이점이 있는지 JWT는 무엇인지 설명드리고자 합니다. 1. 쿠키란? 쿠키를 이용하면 서버가 브라우저에 데이터를 넣을 수 있게 됩니다.우리가 웹사이트를 방문하게 되면, 브라우저는 서버에게 요청을 보내게 됩니다. 서버는 이 요청에 대해 응답을 하게 되는데, 그 페이지를 위한 여러 데이터들이 응답에 담겨있을..
- @Entity
- 영속성 컨텍스트
- N + 1
- @MappedSuperclass
- @Table
- @OneToMany
- 엔티티 매니저
- JPA
- 최적화
- mappedBy
- @Id
- @Cacheable
- 변경감지
- 인메모리 db
- @GeneratedValue
- onetoone
- 스키마 자동 생성
- 메일
- @joincolumn
- 조인 전략
- 즉시 로딩
- 단일 테이블 전략
- @TransactionalEventListener
- 비영속
- 연관관계
- 비동기
- Redis
- 1차 캐시
- 준영속
- @ManyToOne