JPA16 [Java] JPA 강의 - 3 (영속성 관리) 1. 영속성 컨텍스트 - 엔티티를 영구 저장하는 환경 - 엔티티 매니저를 통해서 영속성 컨텍스트에 접근함 - 논리적인 개념 2. 엔티티의 생명주기 - 비영속 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 - 영속 영속성 컨텍스트에 관리되는 상태 - 준영속 영속성 컨텍스트에 저장되었다가 분리된 상태 - 삭제 삭제된 상태 3. 영속성 컨텍스트의 이점 - 1차 캐시 1차 캐시에서 조회 : DB를 직접 조회하는 것이 아닌 1차 캐시에서 조회하는 것 데이터베이스에서 조회 : 1차 캐시에 없으면 DB에서 조회 후 1차 캐시에 저장하고 반환함 --> JPA는 엔티티를 조회하면 영속성 컨텍스트에 올림 - 동일성 보장 같은 트랜잭션 안에서 1차 캐시로 읽으면 동일성을 보장함 - 트랜잭션을 지원하는 쓰기 지연 엔티티 매.. 2024. 1. 11. [Java] JPA 강의 - 1, 2 (JPA 소개) 예전에 실무를 하게 되면서 JPA 강의를 듣게 되었는데 기억이 안나는 부분도 있고, 복습을 하고 싶어서 다시 학습을 시작했다. 나는 Inflearn에서 김영한의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의로 학습했다. 강의를 들으면서 핵심 내용이나 내가 기록하고 싶은 내용 위주로 정리를 해보려고 한다. 1. JPA란? - Java Persistence API - 자바 진영의 ORM 기술 표준 2. ORM이란? - 객체 관계 매핑 (Object-relational mapping) - 객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스대로 설계 3. JPA를 사용해야 하는 이유 - SQL 중심적 개발에서 객체 중심으로 개발하기 위함 - 생산성 : CRUD(저장, 조회, 수정, 삭제)가 편리함 .. 2024. 1. 11. Querydsl 세팅하기 SpringBoot3과 Java17 버전으로 개발을 진행하고 있다. 검색 기능이나 페이징 처리 같은 보다 복잡한 쿼리들을 짜기 위해서 Querydsl을 사용했다. Build.gradle implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persi.. 2023. 9. 6. Enum 생성 도메인을 설계할 때 Enum을 사용하고자 하는 필드들이 몇 있었다. Rest API를 만들 때 enum을 사용하여 값을 받을 때 @JsonCreator와 @JsonValue를 사용하여 직렬화와 역직렬화를 하였다. 직렬화란 객체를 전송 가능한 형태로 바꿔주는 것을 의미하고 역직렬화는 그 데이터들을 다시 자바 객체로 변화해주는 것으로 알면 된다. 우선 작성한 코드를 살펴보자. @Getter @RequiredArgsConstructor public enum BoardCategory implements IdEnum { PET("PET", "반려동물"), FOOD("FOOD", "음식"), TRAVEL("TRAVEL", "여행"); private final String id; private final String.. 2023. 8. 23. 이전 1 2 3 4 다음