개발/Spring7 연관관계 매핑의 모든 것: JPA에서 다루는 다중성, 방향성, 관계의 주인 이해 연관관계 매핑시 고려할 3가지 다중성(일대 다, 다대 일, 다대 다, 일대 일) 다대일(N : 1) : @ManyToOne 일대다(1 : N) : @OneToMany 일대일(1 : 1) : @OneToOne 다대다(N : N) : @ManyToMany 방향 (양방향, 단방향) DB 테이블은 외래 키(Foreign Key) 하나로 조인(Join)을 사용해서 양방향으로 쿼리가 가능합니다. 따라서 DB에는 방향의 개념이 없습니다. 그러나 객체의 경우, 참조용 필드를 가지고 있는 객체만 연관된 객체를 조회할 수 있으므로 방향의 개념이 존재합니다. 객체 관계에서 한쪽만 반대쪽을 참조하는 관계를 단방향, 양쪽 모두 서로를 참조하는 관계를 양방향이라고 합니다. 연관관계의 주인 DB는 외래키(FK) 하나로 두 테이블이.. 2024. 1. 12. JPA 엔티티 매핑 마스터하기: 기본부터 고급 전략까지 Entity Mapping JPA를 사용하는데 가장 중요한 일은 Entity와 Table을 정확하게 매핑하는 것이다. JPA의 매핑 어노테이션은 크게 4가지로 나뉜다. 객체(Entity) 테이블(Table): @Entity, @Table 기본 키(Primary Key): @Id 필드(Field) 컬럼(Column): @Column 연관관계(FK, Foreign Key): @ManyToOne, @OneToMany, @ManyToMany, @OneToOne, @JoinColumn Naming Strategy Spring Data JPA 사용시 hibernate가 기본 구현체로 채택되어있고, hibernate 매핑시 ImprovedNamingStrategy를 기본 클래스로 사용하고 있다. 소문자 -> 소문자 .. 2024. 1. 12. 영속성 컨텍스트의 이해: JPA의 핵심 기능 탐구 영속성이란? 데이터를 생성한 프로그램이 종료되어도 사라지지 않는 데이터의 특성을 말한다. 영속성을 갖지 않으면 데이터는 메모리에서만 존재하게 되고 프로그램이 종료되면 해당 데이터는 모두 사라지게 된다. 그래서 데이터를 파일이나 DB에 영구 저장함으로써 데이터에 영속성을 부여한다. 영속성 컨텍스트란? 엔티티(Entity)를 영구 저장하는 환경 Application과 데이터베이스 사이에서 객체를 보관하는 가상의 저장소 같은 역할 엔티티 매니저(Entity Manager)를 통해 영속성 컨텍스트에 접근 EntityManager를 통해 Entity를 저장, 조회하면 EntityManager는 영속성 컨텍스트에 해당 Entity를 보관하고 관리 영속성 컨텍스트 생명주기 비영속(new): 영속성 컨텍스트와는 무관한.. 2024. 1. 12. JPA 기초부터 실무 활용까지: Java ORM 표준의 이해 JPA(Java Persistence API)란? Java 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용하는 인터페이스 모음 Java Application에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 인터페이스이기 때문에 Hibernate, OpenAPI 등이 JPA를 구현함 어플레케이션과 JDBC 사이에서 동작 JPA는 Application과 JDBC 사이에서 동작한다. JPA 내부에서 JDBC API를 사용하여 SQL을 호출하여 DB와 통신한다. 개발자가 ORM 프레임워크에 저장하면 적절한 INSERT SQL을 생성해 데이터베이스에 저장해주고, 검색을 하면 적절한 SELECT SQL을 생성해 결과를 객체에 매핑하고 전달해 준다. 객체를 저장하는 코드.. 2024. 1. 12. ORM의 이해: 데이터베이스와 객체 지향 프로그래밍의 효율적 연결 영속성(Persistence)란? 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 대문에 프로그램을 종료하면 모두 잃어버리게된다. Object Persistence(영구적인 객체) 메모리 상의 데이터를 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 영구적으로 저장하여 영속성을 부여한다. 데이터를 데이터베이스에 저장하는 3가지 방법 1) JDBC사용 2) Spring JDBC 사용 ( EX: JdbcTemplate) 3) Persistence Framework (EX: Hibernate, Mybatis 등) Persistence Layer 프로그램의 아키텍처에서 데이터에 영속성을 부여해주는 계층을.. 2024. 1. 12. 이전 1 2 다음