관계형 데이터베이스는 객체처럼 상속이라는 개념이 대부분 존재하지 않습니다. 그나마 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사합니다. 상속관계 매핑이란 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것입니다. 이번 포스팅을 통해 상속관계 매핑을 물리 모델로 구현하는 방식을 정리하고자 합니다. 슈퍼타입 서브타입 논리 모델객체지향 프로그래밍에서는 모델링과 구현이 상속을 활용하여 일치시킬 수 있지만, 데이터베이스는 상속을 직접적으로 지원하지 않아서 논리적인 모델과 물리적인 모델 간의 차이가 발생합니다. JPA(Java Persistence API)는 이러한 객체지향과 데이터베이스 간의 패러다임 불일치를 해결하기 위해 상속 관계를 물리적인 데이터베이스 모델로 매핑하..
매핑
JPA(Java Persistence API)를 이해하는 데 어려움을 겪는 이유 중 두 가지는 영속성 컨텍스트의 작동 메커니즘과 연관관계 매핑입니다. 이번 포스팅에서는 연관관계 매핑에 대해 정리해보고자 합니다. JPA는 객체 지향 프로그래밍과 데이터베이스 간의 패러다임 불일치를 해결하기 위해 설계되었습니다. 이를 통해 객체지향적인 개발 방식을 지원하며, 연관관계 매핑은 이러한 패러다임 불일치를 해소하고 객체지향적인 개발을 용이하게 합니다. 연관관계 정의 규칙 연관관계를 매핑할 때 고려해야 할 사항은 다음과 같이 3가지로 구분됩니다. 방향: 단방향, 양방향 (객체 참조) 연관관계의 주인: 양방향 관계에서 관리 주체가 되는 엔티티 (FK를 가지는 테이블) 다중성: 다대일(N:1), 일대다(1:N), 일대일(..

이번 포스팅에서 엔티티 매핑의 핵심적인 역할을 하는 기본키(Primary Key)에 대해 살펴보겠습니다. 기본키는 데이터베이스에서 각 행을 식별하는 데 사용되는 고유한 식별자입니다. 이는 엔티티와 매핑된 객체를 고유하게 식별하고 관계를 맺을 때 중요한 역할을 합니다. @Id @Id는 엔티티의 주요 식별자를 표시하는 역할을 수행합니다. 즉 데이터베이스 테이블의 기본 키(pk)와 객체의 필드를 매핑시켜 줍니다. 일반적으로 @GeneratedValue와 같이 사용되며 @Id만 사용할 경우 기본 키를 직접 할당해주어야 합니다. @Id를 적용할 수 있는 타입은 다음과 같습니다. 자바 기본형 (int, long, ...) 자바 래퍼형 (Integer, Long, ...) String Date (java.util),..

이번 포스팅은 JPA(Java Persistence API)를 사용하여 엔티티 객체와 데이터베이스 테이블 간의 매핑, 그리고 엔티티 필드와 데이터베이스 컬럼 간의 매핑에 대해 살펴보겠습니다. JPA는 자바 객체와 관계형 데이터베이스 간의 매핑을 간소화하고 편리하게 처리할 수 있도록 도와줍니다. 객체와 테이블 매핑 @Entity JPA에서 엔티티(Entity)는 데이터베이스 테이블과 대응되는 하나의 클래스로 데이터의 집합을 의미합니다. JPA를 사용하여 데이터베이스 테이블과 매핑할 클래스는 반드시 @Entity를 붙여야 합니다. @Entity(name = "MEMBER") public class Member { private Long memberId; private String username; } 속성 ..