본문 바로가기

Back-end109

8. 양방향 연관 관계의 기본 개념 0. 개요 - 이번 포스팅은 양방향 연관 관계에 대해 알아보도록 하자. 1. 양방향 연관 관계 - 단방향 연관 관계에서 사용했던 예시를 확장하여 양방향 연관 관계로 만들어보자. a) 관계 예시 - 구현하려는 양방향 연관 관계는 아래의 테이블과 같다. - 이전 포스팅에서 단방향 연관 관계를 설명할 때의 구조와 동일한 테이블 구조다. - 분명 양방향 연관 관계를 구현한다고 했으나 왜 동일한 테이블을 사용할까? - 그 이유는 RDB는 FK를 이용한 Join으로 양방향 연관 관계를 형성한다. - 즉, RDB는 양방향 연관 관계를 기본으로 한다. - 다만 객체의 관점에서 보았을 때 연관 관계의 방향성이 유의미하다. b) 양방향 연관 관계란? - 위의 테이블 구조를 예시로 생각해보자. - Player 테이블의 FK.. 2022. 3. 31.
7. 단방향 연관 관계 0. 개요 - 이전 포스팅에서 DB의 Table을 하나의 Entity(= 객체)로 표현하는 방법에 대해서 배웠다. - 다양한 어노테이션과 옵션을 사용하여 테이블의 Column과 Entity의 필드를 매핑하였고, primary key를 설정하는 방법까지 알아보았다. - 이처럼 Table을 Entity로 표현하는 방법에 대해 알아보았지만, 아직 완전하다고 할 수 없다. - 왜냐면 객체 지향과 RDB의 근본적인 차이를 해결하지 못했기 때문이다. 1. 근본적인 문제 - 객체 지향과 RDB의 근본적인 문제는 관계를 표현하는 방식에 있다. - 객체 지향은 참조 또는 상속을 통해 관계를 형성한다. - RDB에서는 외래 키(= Foreign key)를 통해 관계를 형성한다. - 이처럼 관계를 표현하는 방식이 다르므로,.. 2022. 3. 30.
6. Primary key(기본 키) Mapping 0. 개요 - 이전 포스팅에서 Field와 Column을 매핑하는 방법을 배웠다. - 이번 포스팅에서는 DB에 존재하는 기본 키(= Primary key, PK)를 매핑하는 방법에 대해서 배워보자. 1. Annotation - PK 매핑에 필요한 Annotation을 알아보자. a) @Id - DB의 PK를 명시하기 위해서, Entity의 field에 @Id를 부착한다. - @Id는 PK의 값을 직접 할당하는 경우에 사용한다. @Entity public class Member { @Id private Long id; @Column(name = "name") private String username; } b) @GeneratedValue - PK의 값을 직접 할당하지 않고 DB에게 값 할당의 권한을 넘기.. 2022. 3. 29.
5. Field(칼럼) Mapping 0. 개요 - 이전 포스팅에서 Entitty와 DB Table을 매핑하는 방법에 대해서 알아보았다. - 이번 포스팅에서는 Field와 DB Column을 매핑하는 방법에 대해서 알아보자. 1. Annotation - Field Mapping에 사용되는 기본적인 Annotation에 대해서 알아보자. a) @Column - DB 테이블의 Column을 Entity 필드로 매핑할 때 사용한다. - Enitity 변수와 Column의 이름이 다르다면, @Column의 name 속성을 이용하여 DB의 Column을 명시한다. @Entity public class User { @Column(name = "fullName") private string userName; } b) @Enumerated - Entity.. 2022. 3. 28.
4. Entity Mapping 0. 개요 - 이번 포스팅에서는 JPA의 가장 기본이 되는 Entity Mapping에 대해서 알아보자. 1. Entity Mapping - DB의 테이블을 Java 클래스로 표현한 것을 Entity라고 한다. - JPA는 이 Entity 객체를 이용하여 DB에게 데이터를 전달하거나, DB로부터 가져온 데이터를 담는다. - 즉, DB 테이블의 내용(column)이 일대일 대응하도록, Java 클래스로 구현한 것이다. 2. Entity Mapping을 위한 Annotation a) @Entity - @Entity가 붙은 클래스는 JPA가 관리하는 Entity이다. - 그러므로 테이블과 매핑할 클래스는 반드시 @Entity를 부착해야 한다. - @Entity 사용에 대해 몇 가지 주의사항이 있다. → 기본 .. 2022. 3. 25.
3. JPA의 내부구조와 동작 0. 개요 - 이전 포스팅에서 기본적인 JPA의 구조에 대해서 알아보았다. - 이번 포스팅에서는 JPA가 왜 이러한 기본구조를 갖는지, 그 내부구조와 동작은 어떻게 되는지 알아보자. 1. JPA의 핵심 - JPA는 OOP와 RDB의 관계 표현 형식을 서로가 이해할 수 있도록 매핑하는 것이 주요 기능이다. - 즉, OOP 형식으로 짜인 Java 코드를 RDB가 이해할 수 있는 형식으로 번역되어야 한다. - 그러므로 이를 위해서는 다음 2가지를 구현해야 된다. → 객체를 이용한 RDB 형식의 매핑(= 구조적 특징) → 객체를 이용한 RDB 매핑을 가능하게 하는 내부구조 및 흐름(= 내부 동작 원리) - 위의 2가지 특징을 JPA에서는 어떻게 구현하는지 차근차근 알아보자. 2. Persistence Conte.. 2022. 3. 24.
2. JPA의 기본 구조와 기능 0. 개요 - JPA를 본격적으로 배우기에 앞서 기본적인 프로젝트 구성과 사용 방법에 대해서 간단히 알아보자. - 참고로 본 프로젝트는 Maven을 사용한 빌드 구성임을 알려드립니다. 1. JPA 설정 파일 - 기본적인 설정 파일에 대해서 알아보자. a) pom.xml - 프로젝트 빌드 설정 파일 - 기본적으로 Spring을 사용하기 때문에, Spring 프로젝트와 관련된 설정을 작성한다. - JPA를 사용하기 위해서 JPA의 구현체 중 하나를 import 한다. - 아래의 예시 코드는 Hibernate 라이브러리를 설정하는 코드다. org.hibernate hibernate-entitymanager 5.3.10.Final b) persistence.xml - JPA 설정 파일 - JPA의 기본적인 옵션.. 2022. 3. 23.
1. JPA의 등장 0. 개요 - 이전 포스팅에서 JPA를 사용하는 이유에 대해서 알아보았다. - 왜 JPA가 필요한지, 근본적인 문제점이 무엇인지에 대해서 알아보았다. - 복습하자면 JPA를 사용하는 이유는 SQL 중심의 개발 방식을 객체지향 중심의 개발 방식으로 개선하기 위함이다. - 그렇다면 JPA가 무엇인지 천천히 알아보자. 1. JPA란? - JPA는 Java Persistent API의 축약어다. - 쉽게 설명하자면 JAVA의 ORM 표준 기술을 의미한다. a) ORM(Object-relational Mapping) - ORM이 의미하는 바, 역할하는 바는 JPA가 필요한 이유와 동일하다. - JPA가 필요한 이유는 OOP와 RDB의 구조적 차이로 인해 데이터를 매핑하는 과정에 있어서 SQL 중점적인 개발 방식을.. 2022. 3. 22.
0. JPA를 사용하는 이유 0. 개요 - Spring과 Spring MVC를 익혔다면 이제는 JPA를 배울 차례다. - JPA는 현재 현업에서 가장 활발히 사용되는 기술이다. - 그렇다면 왜 JPA를 사용하는지 알아보자. 1. SQL 중점적 개발의 문제점 a) 무엇이 문제일까? - 다양한 종류의 DB가 존재하지만, 아직까지 관계형 DB가 중점적으로 사용되고 있다. - 그러므로 대부분의 애플리케이션은 OOP를 통해 관계형 DB를 처리 및 관리하는 형태의 구조를 갖는다. - 큰 흐름을 보면 웹 애플리케이션은 프런트와 백엔드의 네트워킹을 이용한 데이터 처리과정이다. - 그리고 그 처리과정 내부에는 DB를 필수적으로 거치게 된다. - 아무리 백엔드를 화려한 Java 코드로 만들었더라도, 결국 DB가 이를 이해할 수 있어야 한다. - 그러.. 2022. 3. 21.