DB/JPA7 [📗자바 ORM 표준 JPA 프로그래밍] 다대일, 일대다, 일대일, 다대다 매핑 전략 1. 엔티티 연관관계 매핑 개요JPA에서 엔티티의 연관관계를 매핑할 때, 다음 세 가지를 고려해야 한다.다중성: 두 엔티티 간의 관계가 몇 대 몇인지 정의한다.다대일 (@ManyToOne): 가장 일반적인 관계.일대다 (@OneToMany): 한 엔티티가 여러 엔티티와 연결.일대일 (@OneToOne): 하나의 엔티티가 하나의 엔티티와만 연결.다대다 (@ManyToMany): 연결 테이블을 통해 구현.단방향 vs 양방향: 관계의 방향성을 설정한다.단방향: 한쪽 엔티티만 다른 쪽을 참조.양방향: 양쪽 엔티티가 서로를 참조.연관관계의 주인: 외래 키를 관리하는 엔티티를 설정한다.주인은 외래 키를 가진 테이블과 매핑된 엔티티이다.주인이 아닌 엔티티는 mappedBy를 사용해 주인을 지정한다.2. 다대일 관계 .. DB/JPA 2024. 11. 20. [📗자바 ORM 표준 JPA 프로그래밍] 양방향 연관관계 매핑 및 주인 정하기 지난 포스팅에서는 단방향 연관관계에 알아보았다. 이어서, 조금 더 복잡한 개념인 양방향 연관관계에 대해 알아보자.5.3 양방향 연관관계양방향 연관관계는 양쪽 엔티티가 서로를 참조하는 관계를 의미한다. 예를 들어, 회원(Member)이 하나의 팀(Team)에 속해 있다고 가정할 때, 단방향 관계에서는 Member가 Team을 참조하는 구조였다. 이제 팀도 해당 팀에 속한 회원들을 참조하도록 설정하여 양방향 관계를 만들어 보자.회원-팀: 다대일(N:1) 관계 / 회원 → 팀 (Member.team)팀-회원: 일대다(1:N) 관계 / 팀 → 회원 (Team.members)@Entitypublic class Member { @Id @Column(name = "MEMBER_ID") private .. DB/JPA 2024. 11. 13. [📗자바 ORM 표준 JPA 프로그래밍] 단방향 연관관계 매핑하기 엔티티 간 연관관계 개요엔티티들은 다른 엔티티와 연관관계를 갖는 경우가 많다. 예를 들어, 주문 엔티티는 상품 엔티티와 연관되고, 상품 엔티티는 또 다른 엔티티(카테고리, 재고 등)와 연관될 수 있다.객체는 참조를 사용해 관계를 맺는 반면, 데이터베이스는 외래 키를 사용해 관계를 설정한다. 이러한 차이로 인해 ORM에서 객체 간의 연관관계를 테이블 연관관계에 매핑하는 작업이 필요하며, 이를 적절히 이해하는 것이 중요하다.주요 개념방향 (Direction): 단방향과 양방향으로 구분된다.단방향: 엔티티가 하나의 방향으로만 다른 엔티티를 참조한다. 예를 들어, 회원 → 팀의 관계가 단방향 관계다.양방향: 양쪽 엔티티가 서로 참조한다. 회원 ↔ 팀의 관계가 양방향 관계이며, 양방향 관계에서는 양쪽에 참조 필드.. DB/JPA 2024. 11. 12. [📗자바 ORM 표준 JPA 프로그래밍] JPA의 기본 어노테이션과 테이블 매핑 @Entity - JPA 관리 대상 지정@Entity는 JPA를 사용해 특정 클래스가 데이터베이스의 테이블과 매핑되도록 지정하는 어노테이션이다. 이 어노테이션이 붙은 클래스는 JPA가 관리하며, 이를 엔티티라 부른다.@Entitypublic class Member { @Id private Long id; private String name;}속성name: JPA에서 사용할 엔티티 이름을 지정한다. 기본적으로 클래스 이름을 사용하지만, 패키지에 이름이 같은 엔티티 클래스가 있을 경우 이름을 지정하여 충돌을 방지할 수 있다.주의사항기본 생성자 필수: 엔티티 클래스는 protected나 public 기본 생성자를 반드시 가져야 한다. JPA가 엔티티를 인스턴스화할 때 기본 생성자를 사용하기 때.. DB/JPA 2024. 11. 11. [📗자바 ORM 표준 JPA 프로그래밍] 엔티티 매니저와 영속성 컨텍스트, 엔티티의 생명 주기 JPA의 엔티티 매니저(EntityManager)JPA에서 엔티티 매니저(EntityManager)는 엔티티의 저장, 수정, 삭제, 조회 등 엔티티와 관련된 모든 작업을 관리하는 관리자 역할을 한다. 애플리케이션에서 JPA를 사용할 때, 엔티티 매니저가 제공하는 메서드를 통해 데이터베이스와의 상호작용을 쉽게 할 수 있다.엔티티 매니저는 엔티티 매니저 팩토리를 통해 생성할 수 있으며, 엔티티 매니저 팩토리는 여러 스레드에서 안전하게 공유할 수 있다.하지만 엔티티 매니저는 스레드 안전하지 않기 때문에 요청마다 새로운 인스턴스를 사용해야 한다. 하나의 엔티티 매니저를 여러 스레드에서 동시에 사용하면 동시성 문제가 발생할 수 있다.// 엔티티 매니저 팩토리로부터 엔티티 매니저 생성EntityManagerFact.. DB/JPA 2024. 11. 10. [📗자바 ORM 표준 JPA 프로그래밍] JPA 소개 및 기본 매핑하기 JPA란 무엇인가?JPA(Java Persistence API)는 자바 진영의 ORM(Object-Relational Mapping) 기술 표준이다. JPA는 애플리케이션과 데이터베이스를 연결하는 중간 계층 역할을 하며, JDBC를 직접 사용하지 않고도 데이터베이스 작업을 수행할 수 있도록 돕는다.ORM이란 무엇인가?ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스의 데이터를 매핑하여 객체지향 프로그래밍 언어와 관계형 데이터베이스 간의 패러다임 불일치 문제를 해결하는 기술이다. ORM을 사용하면 개발자가 객체를 데이터베이스에 저장하거나 조회할 때 SQL을 직접 작성할 필요 없이, ORM 프레임워크가 이를 대신 처리해 준다.객체를 DB에 저장할 때: 개발자는 객체를 컬렉션.. DB/JPA 2024. 11. 6. [📗자바 ORM 표준 JPA 프로그래밍] JPA와 패러다임 불일치 SQL을 직접 다룰 때 발생하는 문제점데이터 접근 계층(DAO) 개발 시 CRUD를 위한 수많은 SQL과 JDBC API 코드 작성객체의 CRUD 작업을 위해서는 많은 SQL 문과 JDBC API를 작성해야 한다. 객체가 많아질수록 DAO 코드가 점점 복잡해진다.객체에 필드가 추가되거나 변경될 경우다루려는 객체에 필드가 추가된다면, 이를 반영하기 위해 SQL을 모두 수정해야 한다. 이는 단순한 추가/수정 작업이라도 SQL 수정이 필수적이다.연관관계가 생기는 경우객체 간의 연관관계가 형성되면, 새로운 SQL이 필요하다. find 같은 함수에서 새로운 관계를 반영하려면 추가적인 쿼리 작성이 요구된다. 따라서 DAO 코드에서 사용하는 SQL을 일일이 확인해야 하며, 객체와 DAO가 강하게 결합된다. 이러한 의.. DB/JPA 2024. 11. 4. 이전 1 다음