개념) JPA와 엔티티 연관관계

dong.___.ju·2025년 4월 10일
post-thumbnail

JPA?

객체와 관계형 데이터베이스를 매핑해주는 ORM 기술을 표준화한 API이다.
객체 간의 참조와 데이터베이스 테이블의 외부 키를 매핑하여 엔티티 간의 관계를 정의한다.

  • 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이며
  • SQL 작성이 없어 반복적인 CRUD 작업이 간소화되고, 데이터베이스 작업을 가능하게 한다.

entity?

엔티티(Entity)는 DB 테이블과 매핑되는 클래스이며.
데이터베이스에 저장된 정보를 자바 객체로 다루기 위해 만들어진 클래스라고 할 수 있다.

  • 엔티티 클래스는 데이터베이스의 테이블을 모델링하며, 각 인스턴스는 데이터베이스 테이블에 대응된다.
  • JPA에서 엔티티는 테이블에 대응하는 하나의 클래스
  • 엔티티 클래스는 @Entity 어노테이션으로 선언되며, 테이블의 열은 클래스의 필드로 매핑됩니다.

JPA와 엔티티 연관관계

JPA에서 영속 객체(Entity) 간의 연관관계를 통해 객체 지향 프로그래밍에서의 객체들 간 관계와 데이터베이스의 테이블 간 관계를 서로 매핑하여 연결함.
영속객체가 테이블과 매핑되는 것처럼 영속객체간의 관계는 테이블간의 관계와 매핑됨.
영속객체간 관계 그리고 테이블간 관계에는 차이가 있어 이해하고 매핑을 구성해야함.

  • 객체 내에서는 객체가 객체를 참조를 사용 가능하며, User객체가 여러개의 Order객체를 참조 할 수 도 있다.

  • 방향성에는

  1. 단방향 관계 : 한 엔티티가 다른 엔티티를 참조하지만, 반대로는 참조하지 않는 관계.
  2. 양방향 관계 정의: 두 엔티티가 서로를 참조하는 관계.
  3. 대부분의 경우 양방향 관계가 선호되며 데이터 접근성과 관리 편의성이 뛰어나기 때문이다.
       
  • 1:1 관계 (@OneToOne)

    한 엔티티가 다른 하나의 엔티티와만 연결되는 관계이다.

    주 테이블과 대상 테이블 중 외래 키를 저장할 위치를 선택할 수 있으며, 유니크 제약 조건을 통해 관계를 명확히 한다.

  • 1:N 관계 (@OneToMany)

    하나의 엔티티가 여러 엔티티와 연결되는 관계이다.

    "일(1)"이 되는 쪽이 연관 관계의 주인이며, 외래 키는 항상 "다(N)" 쪽에 저장된다. 단방향과 양방향 모두 설정 가능하다.

  • N:1 관계 (@ManyToOne)

    여러 엔티티가 하나의 엔티티와 연결되는 관계이다.

    데이터베이스에서는 일반적으로 많이 사용되며, 객체 지향적으로도 효율적인 설계 방식이다. 양방향 설정 시 Owner를 지정해야한다.

1개의 댓글

comment-user-thumbnail
2025년 4월 13일

Jpa와 엔티티 관계를 잘 정리해주셔서 참고가 많이 됐어요!

답글 달기