
객체와 관계형 데이터베이스를 매핑해주는 ORM 기술을 표준화한 API이다.
객체 간의 참조와 데이터베이스 테이블의 외부 키를 매핑하여 엔티티 간의 관계를 정의한다.
엔티티(Entity)는 DB 테이블과 매핑되는 클래스이며.
데이터베이스에 저장된 정보를 자바 객체로 다루기 위해 만들어진 클래스라고 할 수 있다.
@Entity 어노테이션으로 선언되며, 테이블의 열은 클래스의 필드로 매핑됩니다.JPA에서 영속 객체(Entity) 간의 연관관계를 통해 객체 지향 프로그래밍에서의 객체들 간 관계와 데이터베이스의 테이블 간 관계를 서로 매핑하여 연결함.
영속객체가 테이블과 매핑되는 것처럼 영속객체간의 관계는 테이블간의 관계와 매핑됨.
영속객체간 관계 그리고 테이블간 관계에는 차이가 있어 이해하고 매핑을 구성해야함.
객체 내에서는 객체가 객체를 참조를 사용 가능하며, User객체가 여러개의 Order객체를 참조 할 수 도 있다.
방향성에는
1:1 관계 (@OneToOne)
한 엔티티가 다른 하나의 엔티티와만 연결되는 관계이다.
주 테이블과 대상 테이블 중 외래 키를 저장할 위치를 선택할 수 있으며, 유니크 제약 조건을 통해 관계를 명확히 한다.
1:N 관계 (@OneToMany)
하나의 엔티티가 여러 엔티티와 연결되는 관계이다.
"일(1)"이 되는 쪽이 연관 관계의 주인이며, 외래 키는 항상 "다(N)" 쪽에 저장된다. 단방향과 양방향 모두 설정 가능하다.
N:1 관계 (@ManyToOne)
여러 엔티티가 하나의 엔티티와 연결되는 관계이다.
데이터베이스에서는 일반적으로 많이 사용되며, 객체 지향적으로도 효율적인 설계 방식이다. 양방향 설정 시 Owner를 지정해야한다.
Jpa와 엔티티 관계를 잘 정리해주셔서 참고가 많이 됐어요!