본문 바로가기

전체 글

(150)
[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에 쿼리 전달 된다. 엔티티 매니저 & 영속성 컨텍스트 - 엔티..
[책 요약]이펙티브자바 21~25 아이템 21. 인터페이스는 구현하는 쪽을 생각해 설계하라. 인터페이스 내 디폴트 메서드의 등장 자바 8 이전에는 기존 구현체를 수정하지 않고는 인터페이스에 메서드를 추가할 방법이 없었다. 자바 8 이후, 핵심 컬렉션 인터페이스에 디폴트 메서드가 여러개 추가 되었다. 디폴트 메서드가 기존 구현체에 런타임 오류를 일으킬 수도 있다. 예. apache.commons.collections4.SynchronizedCollection 위 클래스는 객체의 동기화를 제공한다. 그런데 4.4 버전 이전에는 removeIf가 구현체에 없어서, 인터페이스에서 제공하는 디폴트 메서드를 사용하였다. 그 결과 동기화가 없어서, 클라이언트는 예상했던 결과를 받지 못할 수도 있다. 예를 들어, 멀티 스레드 환경에서 Synchroni..
[강의 요약 노트]실전! 스프링 부트와 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..
아이템 17. 변경 가능성을 최소화해라 개념 불변 클래스 인스턴스 내부 값을 수정할 수 없는 클래스 어떻게 불변 클래스를 만들까 (규칙 5가지) 1. 객체의 상태를 변경하는 메서드를 제공하지 않는다. public class Car { private final int position; public Car(int position) { this.position = position; } public int getPosition() { return position; } public static void main(String[] args) { // 위치를 1로 초기화한 후 변경 불가. // 위치가 2인 차가 필요할 경우, 객체를 새로 만들어야만 한다. Car car1 = new Car(1); System.out.println("current positi..