일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 그리디
- 개발자
- 애자일기법
- Elasticsearch
- cleancode
- Baekjoon
- 그리디알고리즘
- 읽기쉬운코드
- 프레임워크
- Spring
- database
- mongoDB
- 코드
- ES
- 알고리즘
- API
- 엘라스틱서치
- 개발
- 코딩
- Java
- 애자일프로그래밍
- 코딩테스트
- 자바
- framework
- 스프링
- JPA
- 데이터베이스
- 백준
- spring boot
- 클린코드
- Today
- Total
목록ORM (4)
튼튼발자 개발 성장기🏋️
1. 기본값 타입기본값 타입은 자바의 원시 타입과 그에 대응되는 래퍼 클래스, 그리고 String 같은 값 클래스들로, JPA에서는 이러한 타입을 값 타입이라고 부른다. 예를 들어, int, Integer, String, boolean 등이 기본값 타입에 속합니다. 이러한 타입들은 데이터베이스의 컬럼에 매핑되어 저장되며, JPA가 제공하는 생명주기를 따르지 않고, 불변 객체로 다루는 것이 일반적이다.2. 임베디드 타입임베디드 타입(Embeddable Type)은 여러 개의 기본값 타입을 모아서 하나의 복합적인 값 타입을 만드는 것이다. 이 임베디드 타입은 엔티티의 일부로 사용되며, 엔티티의 속성으로 포함되어 데이터베이스 테이블의 컬럼에 매핑된다. 예를 들어, 주소(Address)와 같은 객체는 도시, 거..

1. 프록시엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아닐 것이다. 지금 내가 리딩하고 있는 토이프로젝트만 봐도 유저 엔티티에 피드 엔티티, 댓글 엔티티 등 많은 엔티티와 연관관계를 갖는데 항상 사용되지는 않는다. 유저의 정보를 조회할 때 이 사용되지 않는 엔티티까지 조회하는 것은 굉장한 부담이 되고 비효율적일 것이다.JPA는 이런 문제를 해결하고자 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 제공하는데 이것을 지연 로딩이라고 한다. 이 지연 로딩을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이 것을 프록시 객체라 부른다.1.1. 프록시 기초 프록시는 JPA가 엔티티의 연관관계를 처리하는 핵심적인 기법 중 하나로, 실제 ..

영속성 관리는 엔티티(Entity) 객체를 데이터베이스와 매핑하고, 엔티티의 생명주기를 관리하며, 영속성 컨텍스트(Persistence Context)를 통해 엔티티의 상태를 제어하는 데 사용된다. 이 글에서는 엔티티 매니저 팩토리와 엔티티 매니저, 영속성 컨텍스트, 엔티티 생명주기, 플러시, 준영속 상태와 같은 주요 개념을 포스팅한다. 1. 엔티티 매니저 팩토리와 엔티티 매니저엔티티 매니저 팩토리(EntityManagerFactory)는 JPA에서 엔티티 매니저(EntityManager)를 생성하는 역할을 한다. 이는 애플리케이션이 시작될 때 한 번 생성되며, 애플리케이션이 종료될 때까지 유지된다.엔티티 매니저 팩토리의 생성은 비용이 많이 들어가기 때문에 공유해서 사용하며 엔티티 매니저는 connect..
플러시 flush는 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 역할을 한다. 이 기능을 사용하면 다음과 같은 일이 일어난다. - Entity와 영속성 #2에서 알아봤던 것 처럼 변경 감지가 작동하여 스냅샷과 비교하여 수정된 엔티티를 찾는다. 수정된 엔티티가 있을 때 수정 쿼리를 만들어 SQL 저장소에 등록한다. - SQL 저장소의 쿼리를 데이터베이스에 전송한다. 영속성 컨텍스트를 플러시하는 방법은 3가지가 있다. 1. em.flush()를 직접 호출한다. - 테스트나 다른 프레임워크와 JPA를 함께 사용할 때 외에는 거의 사용하지 않는다. 2. 트랜잭션을 커밋하여 플러시를 자동 호출한다. - 변경 내용을 SQL로 전달하지 않고 커밋하면 데이터베이스에 반영이 되지 않는다. - 꼭 커밋 전에 영속..