🔥 JPA의 영속 상태(Persistent State) 정리JPA를 제대로 이해하려면, **“영속 상태(Persistent State)”**를 중심으로 사고해야 합니다.이 개념을 정확히 이해하면, 다음과 같은 키워드들이 전부 하나로 연결됩니다:orphanRemovalflush()dirty checking (변경 감지)merge() JPA 엔티티 생명주기 4단계JPA는 엔티티 객체의 상태를 크게 다음 4단계로 나눕니다.상태 설명 예시비영속 (Transient)EntityManager에 등록되지 않은 상태new Member()영속 (Persistent)EntityManager가 객체를 추적(tracking)하며 DB와 연결된 상태em.persist(member)준영속 (Detached)한때 영속이었지만, ..
공부/Spring Boot
(root, query, criteriaBuilder) -> { ... } (root, query, criteriaBuilder) -> { ... }는 Java의 JPA Criteria API에서 사용되는 람다식입니다. 보통 Spring Data JPA에서 동적 쿼리를 만들 때 자주 등장하죠. 각각의 매개변수는 다음과 같은 역할을 합니다. ✅ rootEntity의 루트 객체입니다.조회하려는 테이블(또는 엔티티)의 정보를 나타냅니다.예: root.get("name") → name이라는 컬럼(필드)을 의미.✅ queryCriteriaQuery 객체입니다.쿼리 전체 구조를 정의할 수 있게 도와줍니다.예: query.select(...), query.where(...) 등을 설정할 수 있음.Specificati..
사용자 탈퇴 시 IS_DELETED = true로 변경되도록하는 SOFT-DELETED를 하고 있다.@SQLRestriction("IS_DELETED = 0") 문제)사용자 탈퇴 시, SOFT-DELETED가 되어 IS_DELETED = true가 된다.사용자와 게시판 데이터는 1:N관계가 맺어 있다. 사용자가 탈퇴했더라도, 게시판 데이터는 조회하고 싶은 상황이다. 참고링크)https://pixx.tistory.com/391#%40SQLRestriction%20%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EC%9D%B4%EB%9E%80%E2%9D%93-1 [TIL, 일일 회고] 2024.09.11 - Hibernate @SQLRestriction 어노테이션: 사용법..
https://pixx.tistory.com/391 @SQLDelete(sql = "UPDATE AST_ATTR_ELEMENTS SET IS_DELETED = 1 WHERE AST_ATTR_ELEMENT_ID = ?")@SQLRestriction("IS_DELETED = 0") 개요이번 프로젝트에서는 모든 조회 및 검색에서 is_deleted가 false인, 즉 논리적으로 삭제되지 않은 데이터만을 처리하도록 요구하고 있습니다. 이를 해결할 수 있는 방법은 다양합니다. 예를 들어, 단순히 Repository에 조건을 추가하는 방법, @Query 어노테이션을 활용하는 방법 등이 있습니다. 하지만 이번 기회에 새롭게 알게 된 @SQLRestriction 어노테이션에 대해 공부한 내용을 정리하고자 합니다...
스프링 부트 JPA - @PrePersist, @PreUpdate 개념@PrePersist 및 @PreUpdate는 Entity가 Persist(데이터베이스에 삽입) 또는 Update(데이터베이스에 수정)되기 전에 JPA Provider가 자동으로 실행해야 하는 메서드를 지정하는 데 사용되는 JPA(Java Persistence API)의 어노테이션(Annotation)입니다.@PrePersist@PrePersist 어노테이션은 Entity가 영속화되기 직전에 실행되어야 하는 Entity 클래스의 메서드를 표시하는 데 사용합니다. 이 메서드는 Entity가 데이터베이스에 저장되기 전에 JPA Provider에 의해 자동으로 호출됩니다.@PreUpdate@PreUpdate 어노테이션은 데이터베이스에서 ..

Spring Boot Webflux 반응형 및 비동기적인 웹 애플리케이션 개발을 지원하는 모듈이다. 이 모듈은 Reactive Streams 사양을 기반으로 하여, 비동기적인 이벤트 지향 프로그래밍을 통해 높은 확장성과 성능을 제공한다. Webflux를 사용하는 목적은 반응형 프로그래밍을 통해 '높은 처리량'과 '확장성'을 갖는 애플리케이션을 만드는 것을 목표로 한다. [ 더 알아보기 ] 💡 Webflux는 Spring Framework 5.0부터 지원한다고 들었는데 Spring Boot는 몇 버전이 되어야 하는가? - Spring Framework 5.0은 Spring Boot 2.0 이상을 요구하므로 Webflux를 사용하는데 Spring Boot 2.0 이상 버전이 최소 요구사항이 됩니다. Webf..

ResponseEntity ?Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스를 상속받아 구현한 클래스가 RequestEntity, ResponseEntity 클래스이다.이것은 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpStatus, HttpHeaders, HttpBody를 포함한다.참고 https://devlog-wjdrbs96.tistory.com/182 프로젝트에서 활용장바구니가 추가 기능에서 활용하였다.값이 NULL일 경우, 장바구니 추가 가능 / 값이 NULL이 아닐 경우, 예외처리 에러 클래스 package com.example.shopping.common;public class RestError { private S..