4. 엔티티 매핑
·
Spring/ORM
1. 객체와 테이블 매핑 @Entity - 데이터베이스 테이블과 매핑되는 객체 - 주의 - 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) - final class, enum, interface, inner class, record 사용 X - 저장할 필드에 final 사용 X → 수정 불가 - 속성 : name - JPA에서 사용할 엔티티 이름을 지정 - 기본값 : 클래스 이름을 그대로 사용(ex. Member) - 같은 클래스 이름이 없으면, 가급적 기본값을 사용한다. @Table - 엔티티와 매핑할 테이블 지정 - 속성 2. 데이터베이스 스키마 자동 생성 - DDL을 애플리케이션 실행 시점에 '자동 생성' - 테이블 중심 → 객체 중심 - 데이터베이스 방언을 활용해서,..
3. 영속성 관리 - 내부 동작 방식
·
Spring/ORM
JPA에서 가장 중요한 2가지 - 객체와 관계형 데이터베이스 매핑하기 (ORM) - 영속성 컨텍스트 1. 영속성 컨텍스트 - JPA에서 관리되는 Entity 객체의 논리적인 저장소 - Entity 객체의 생명 주기를 관리하고, DB와의 상호작용을 최적화하는 역할을 한다. https://chat.openai.com/share/d91d8f7c-5495-4c01-adf6-313078551d53 1) 영속성 컨텍스트의 장점 (1) 1차 캐시 (2) 동일성 보장 (Identity) (3) 트랜잭션을 지원하는 쓰기 지연 (Transactional write-behind) (4) 업데이트 변경 감지 (Dirty Checking) (5) 지연 로딩 (Lazy Loading) 2) 영속성 컨텍스트를 플러시하는 방법 (1..
2. JPA 시작하기
·
Spring/ORM
1. 초기 설정 1) pom.xml - Maven 프로젝트의 구성을 정의하는 XML 파일이다. cf. Maven : Gradle과 같이 프로젝트 빌드, 종속성 관리, 배포 등을 자동화하는 빌드 도구 2) persistence.xml - JPA를 사용할 때, 데이터베이스 연결 및 테이블과 엔티티 클래스 간의 매핑을 설정하는 XML 파일이다. 2. 데이터베이스 방언 - JPA는 특정 데이터베이스에 종속 X - 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다름 ex. 가변 문자 : MySQL - VARCHAR, Oracle - VARCHAR2 - 방언 → SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능 - direct → 데이터베이스에 대한 SQL 방언을 설정하는 매개 변수 JPA가..
1. JPA 소개
·
Spring/ORM
1. SQL 중심적인 개발의 문제점 1) 객체 지향 언어 & 관계형 데이터베이스 - 객체를 관계형 DB에 관리 아래 그림처럼, SQL에 의존적인 개발을 피하기 어렵다. 2) 객체와 관계형 데이터베이스의 차이 (1) 상속 객체 간의 상속 관계를 SQL 쿼리문으로 표현하려면 JOIN 연산을 사용해야 한다. 하지만, 상속 계층이 깊어질수록 JOIN 연산도 복잡해지며 상속 관계를 가진 객체들을 쿼리하려면 매번 JOIN 및 필터링을 수행해야 한다. (2) 연관관계 객체는 참조를 사용 : member.getTeam() 테이블은 외래 키를 사용 : JOIN ON M.TEAM_ID = T.TEAM_ID (3) 데이터 타입 (4) 데이터 식별 방법 2. JPA 소개 1) JPA 개념과 동작 방식 JPA - Java Pe..
2. 도메인 분석 설계
·
Spring/JPA 1
1. 요구사항 분석 1) 회원 기능 - 회원 등록 - 회원 조회 2) 상품 기능 - 상품 등록 - 상품 수정 - 상품 조회 3) 주문 기능 - 상품 주문 - 주문 내역 조회 - 주문 취소 4) 기타 요구사항 - 상품은 재고 관리가 필요하다. - 상품의 종류는 도서, 음반, 영화가 있다. - 상품을 카테고리로 구분할 수 있다. - 상품 주문시 배송 정보를 입력할 수 있다. 2. 도메인 모델과 테이블 설계 - 다대다 관계는 관계형 데이터베이스는 물론, 엔티티에서도 거의 사용하지 않는다. 따라서 '주문상품'이라는 엔티티를 추가해서 일대다, 다대일 관계로 풀어냈다. 3. 회원 엔티티 분석 - 실무에서는 회원이 주문을 참조하지 않고, 주문이 회원을 참조하는 것으로 충분하다. ('多'에서 '一'을 참조한다.) → ..
1. 프로젝트 환경설정
·
Spring/JPA 1
1. JUnit5 테스트 에러 이걸 보지않고, JUnit5으로 테스트하다가 1시간동안 테스트 오류 잡아내느라 힘들었다는... Tip. Build.gradle에 라이브러리 추가하자. (vscode의 live-server 같은?) 2. JPA와 DB 설정, 동작확인 1) spring.jpa.hibernate.ddl-auto: create - 애플리케이션 실행 시점에 테이블을 drop 하고, 다시 생성한다. 2) show_sql: true - System.out에 하이버네이트 실행 SQL을 남긴다. 3) org.hibernate.SQL - logger를 통해 하이버네이트 실행 SQL을 남긴다. 4) org.hibernate.orm.jdbc.bind: trace - SQL 실행 파라미터를 로그로 남긴다. (쿼리..