본문 바로가기

개발/JPA

(17)
[JPA 기본] 4. 엔티티 매핑 객체와 테이블 매핑 방법 @Entity 정의 JPA를 사용해서 테이블과 매핑할 클래스 Entity 사용시 주의사항 - public이나 protected 접근제어자가 붙은 기본 생성자는 필수 (리플렉션 사용에 필요) - final 클래스, enum, interface, inner 클래스 사용 불가. - 저장할 필드에 final 사용 불가 name 속성 - 기본 값: 클래스 이름을 그대로 사용한다. - 별도의 이름을 지정하고 싶을 경우 name 속성 사용 // Member 그대로 사용 @Entity public class Member { .... } // 별도의 이름 지정 @Entity(name="Users") public class Member { .... } @Table 정의 엔티티와 매핑할 테이블 지정..
[JPA 기본] 3. 영속성 관리 영속성 컨텍스트 JPA 중요 개념 2가지 1. 객체와 관계형 데이터베이스 매핑하기(Object Relational Mapping) 2. 영속성 컨텍스트 -> 이번 포스팅에서 소개 예정 엔티티 매니저 팩토리와 엔티티 매니저의 동작 원리 (1)클라이언트의 요청이 온다. (2) 엔티티 매니저 팩토리는 요청별로 엔티티 매니저를 만든다. (3)각 매니저는 커넥션 풀의 커넥션을 이용하여 DB와 통신한다. 영속성 컨텍스트 - 정의: 엔티티를 영구 저장하는 환경 - 코드 EntityManger.persist(entity) ** 영속성 컨텍스트에 entity를 저장한다. DB에 직접저장하는 것이 아님을 주의하자. ** 트랜젝션에서 commit하는 시점에 DB에 쿼리 전달 된다. 엔티티 매니저 & 영속성 컨텍스트 - 엔티..
[강의 요약 노트]실전! 스프링 부트와 JPA 활용1 : (4) 회원 도메인 개발 Transactional 적용 안 되는 경우 https://www.whiteship.me/spring-transactional-and-spring-aop/
[강의 요약 노트]실전! 스프링 부트와 JPA 활용1 : (3) 애플리케이션 구현 준비 ** 실무에서는 검증 로직이 있어도 멀티 쓰레드 상황을 고려해서 회원 테이블의 회원명 컬럼에 유니크 제 약 조건을 추가하는 것이 안전
[강의 요약 노트]실전! 스프링 부트와 JPA 활용1 : (2)도메인 분석 설계 도메인 모델과 테이블 설계 주문-상품은 다:다 관계이므로, 주문과 상품 사이에 주문 상품을 끼운다. 테이블별 중요사항 Member 1) Address: 내장타입(Embeded Type) - 연관된 데이터는 하나의 객체로 묶어, 내장 타입으로 사용하는 것이 낫다. (예. 국가, 도시, 우편번호 -> 주소로 묶자) - 값타입은 Setter 절대 사용 금지. 예시. https://devlog-wjdrbs96.tistory.com/405 ( 상세 설명은 기본편 참고) [JPA] 9장: 값 타입이란 무엇일까? 값 타입 분류 JPA의 데이터 타입을 크게 분류하면 엔티티 타입 과 값 타입 으로 나눌 수 있습니다. 엔티티 타입은 @Entity로 정의하는 객체이고, 값 타입은 int, Integer, String 처럼 ..
[강의 요약 노트]실전! 스프링 부트와 JPA 활용1 : (1) 프로젝트 환경 설정 강좌 소개 웹 애플리케이션 개발 1. 프로젝트 세팅 2. 회원, 주문, 상품의 요구 사항 분석 3. 도메인 모델 설계 4. 엔티티 설계 5. 애플리케이션 아키텍처 구성 6. 핵심 비즈니스 로직 개발 - 회원, 상품, 주문 도메인 개발 - 핵심 비즈니스 로직 개발 - 테스트 케이스 검증 - 도메인 주도 설계 이해 7. 웹 계층 개발 API 개발과 성능 최적화 REST API 개발 - 등록,수정, 조회 REST API 개발 - API 개발 실무 노하우 성능 최적화 - JPA 극한의 조회 성능 최적화 노하우 전수 - 복잡한 예제를 6단계로 성능 튜닝 - 실무 JPA 성능 문제의 90% 해결 1편 강좌의 장점 웹 애플리케이션 개발의 전체 사이클을 볼 수 있다. 프로젝트 생성 세팅 의존 관계: Spring Web..
[JPA 기본] 2. JPA 소개 1. SQL 중심적인 개발의 문제점 1.1 반복되는 CRUD 쿼리 작성 작업 INSERT, SELECT, UPDATE, DELETE....계속 반복만하는 지루한 작업의 연속이다. 1.2 필드 추가시 객체 변환, 관련 쿼리 일괄 변경 (이건 실제 내 경험)최근 프로젝트에서 실제로 일어난 일이다. 기존의 정책에서는 회원 정보 테이블에서 NAME이라는 컬럼을 사용하고 있었다. 이 안에 사용자 성, 이름 모두 포함되었다. 그런데, "우리는 글로벌 서비스니까, 외국인들도 사용하기 쉽게 성, 이름을 구분해서 입력 받아야겠다!"라는 요구사항이 들어왔다. FIRST_NAME, LAST_NAME으로 필드 추가는 쉬웠지만, NAME 컬럼을 사용하는 쿼리를 조회한 결과 수백개의 쿼리가 나왔다 (흑흑) 결국 몇 일에 걸쳐 F..
[JPA 기본] 1. 강좌 소개 김영한님의 'JAVA ORM 표준 JPA 프로그래밍 - 기본편' 강의를 들으며 정리한 노트입니다. 나는 왜 JPA를 공부하는가 JPA가 자바의 객체 지향 관점에 적합하다는 것은 잘 알고 있었다. 하지만 러닝커브+현재팀에서 사용하지 않음(우리는 SqlMapper MyBatis를 사용한다)을 핑계로 공부를 미뤄왔다. 이번에 JPA를 사용하는 회사로 이직하면서, 1월 입사를 앞두고 부랴부랴 공부를 시작했다. (아자아자!!) DB 접근 방식의 발전 과정 JDBC -> MyBatis, JdbcTemplate -> JPA JPA 실무 도입 왜 어려울까? 객체와 테이블을 효율적으로 매핑하도록 설계하는 노하우가 필요하다 강의 목표 객체와 테이블 설계 매핑 - 객체와 테이블을 제대로 설계하고 매핑하는 방법 - 기본 키와..