728x90

java 45

[ JPA ] 변경 감지(Dirty Checking)와 병합(Merge) 알아보기

Intro 안녕하세요. 환이s입니다👋이전 포스팅에서 주문 검색 기능을 JQPL, JPA 표준 Criteria 그리고 Querydsl을 활용해서 알아봤습니다.오늘은  JPA에서 데이터를 변경하는 방법에 대해 소개하고 변경 시에 주의할 점에 대해서 소개하려고 합니다🙂 데이터를 변경하는 방법에는 변경 감지(Dirty Checking)와 병합(Merge)기능이 JPA의 핵심적인 요소로, 애플리케이션의 성능과 데이터 일관성을 유지하는 데 중요한 역할을 합니다. 순차적으로 알아보겠습니다.준영속 엔티티 준영속 엔티티는 JPA에서 영속성 컨텍스트와의 연결이 끊어진 상태의 엔티티를 의미합니다. 즉, 엔티티가 처음에는 영속 상태로 관리되다가, 영속성 컨텍스트가 종료되거나 명시적으로 분리될 때 준영속 상태로 전환됩니다..

[ ORM ]/JPA 2025.01.18

[ JPA ] E-commerce 프로젝트 - 주문 검색 기능 개발 (JPQL,Criteria,Querydsl)

Intro안녕하세요. 환이s입니다👋이전 포스팅에서 주문 도메인 개발까지 알아봤습니다.이어서 앞서 말씀드린 주문 파트의 핵심인 검색 기능 개발을 진행하면서 JPA에서 동적 쿼리를 어떻게 해결하는지 알아보겠습니다🙂 주문 검색 기능 개발 먼저 주문 목록 페이지를 확인해 보겠습니다.  위 화면을 보면 주문상태를 검색조건으로 필터링할 수 있는 기능인 것을 확인할 수 있습니다.각 조건을 선택하면 해당 조건을 동적으로 추가하고 제거해야 하기 때문에 동적 쿼리가 필요하게 됩니다. 그렇다면 주문 도메인 개발 때 생성한 OrderRepository에 검색 로직을 추가해서 동적 쿼리를 생성해야 하는데, 그전에 검색 조건 파라미터 먼저 만들어 줍니다.  ✅ 검색 조건 파라미터 - OrderSearchpublic class..

[ ORM ]/JPA 2025.01.13

[ JPA ] E-commerce 프로젝트 - 주문 도메인 개발

Intro안녕하세요. 환이s입니다👋이전 포스팅에서 상품 도메인 개발까지 알아봤습니다.이어서 주문 도메인을 개발해 보겠습니다🙂 ✅ 구현 기능     1️⃣ 상품 주문     2️⃣ 주문 내역 조회     3️⃣ 주문 취소 ✅ 순서     1️⃣ 주문 엔티티, 주문상품 엔티티 개발     2️⃣ 주문 리포지토리 개발     3️⃣ 주문 서비스 개발     4️⃣ 주문 검색 기능 개발     5️⃣ 주문 기능 테스트주문, 주문상품 엔티티 개발 먼저 엔티티 내에 핵심 비즈니스 로직을 구현합니다. ✅ Order import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.time.LocalDateTime; import j..

[ ORM ]/JPA 2025.01.11

[ JPA ] E-commerce 프로젝트 - 상품 도메인 개발

Intro 안녕하세요. 환이s입니다👋이전 포스팅에서 회원 도메인 개발까지 알아봤습니다. 이어서 상품 도메인을 개발해 보겠습니다. 상품 테스트는 회원 테스트와 비슷하므로 생략하겠습니다🙂상품 도메인 개발 - 상품 엔티티 개발(비즈니스 로직 추가) 먼저 Item 엔티티에서 관리하는 stockQuantity를 변경하는 비즈니스 로직을 엔티티에서 처리하겠습니다.서비스 단에서 처리할 수 있지만, 엔티티에서 처리하는 것이 응집도가 높은 설계로 볼 수 있습니다. ✅Itemimport jpabook.jpashop.exception.NotEnoughStockException;import lombok.Getter;import lombok.Setter;import jpabook.jpashop.domain.Category;..

[ ORM ]/JPA 2025.01.06

[ JPA ] E-commerce 프로젝트 - 도메인 분석 설계

Intro 안녕하세요. 환이s입니다👋 이전 포스팅에서 JPA와 DB 설정 방법에 대해 알아보았습니다. 오늘부터 간단한 상품 주문과 회원 관리 기능을 갖춘 웹 프로젝트를 만들어 보려고 하는데, 먼저 요구사항에 맞춰서 도메인 분석과 설계를 통해 실제 코드에 엔티티 연관관계 매핑까지 진행해 보겠습니다.블로그 내용은 강의를 들으며 작성한 수강 일지로, 코드에 사용되는 어노테이션이나 연관 관계 매핑에 대한 구체적인 설명은 이전에 다룬 내용을 바탕으로 생략하겠습니다.도메인 분석 설계 - 요구사항 분석 먼저 메인 화면을 보고 진행하겠습니다.  메인 화면을 보면 기능은 크게  회원 기능/ 상품 기능/ 주문 기능 총 3개의 기능 요구사항으로 나뉘어 볼 수 있는데, 각 기능별 목록을 정리해 보겠습니다. 회원 기능회원 등..

[ ORM ]/JPA 2024.12.23

[ Java ] Runnable 인터페이스 개념 및 Thread 단일 연산

Intro 안녕하세요. 환이s입니다👋이 전 포스팅에서 동시성을 위한 3가지 키워드에 대해 알아봤는데요.실무에서 여러 프로젝트를 경험하면서 기초 부분을 더욱더 탄탄하게 만들어야겠다는 생각을 갖고복습하는 일상을 보내고 있습니다🙂  저는 자바 병렬 프로그래밍이라는 책을 참고해서 해당 포스팅을 작성하려고 합니다.오늘은 Thread 단일 연산부터 등장했던 Runnable 인터페이스에 대해 알아보겠습니다.Runnable 이란? Runnable 인터페이스란, Java에서 간단한 Thread를 생성하기 위한 인터페이스로서,메서드인 run()을 오버라이딩하여 사용할 수 있습니다. 이 인터페이스를 구현하여 만든 Thread는 Thread 클래스를 상속하지 않아도 되며,전통적인 방법보다 더 쉽게 Thread를 생성할 수..

[ JAVA ]/JAVA 2024.09.23

[ Java ] Optional 개념 및 올바른 사용법 알아가기

Intro 개발을 하다 보면 가장 많이 발생하는 에러 중 하나인 NullPointException을 자주 만나게 되는데,해당 에러를 피하기 위해 null을 체크하는 로직을 추가합니다. //mkey = Id 값 입니다. 해당하는 데이터가 없으면 null 입니다.MemberVO findUser = memberRepository.findById(mKey);//만약 findUser 결과 값이 null이면 NullPointException이 발생합니다.findUser.getUserNm();//--------------------------------------------------------------------------------if(findUser != null){//NullPointException을 방지..

[ JAVA ]/JAVA 2024.06.10

[ Java ] OutOfMemoryError(With 힙덤프) 에러 분석해보기

안녕하세요🤚 오늘은 실무에서 프로젝트 진행 중 Heapdumponoutofmemoryerror 가 발생해서해당 에러의 개념과 실전 예제 코드를 통해서 알아보겠습니다 😄    Heapdumponoutofmemoryerror 옵션은 Java 애플리케이션이 메모리 부족(OutOfMemoryError)오류가 발생했을 때 발생합니다. Java는 개체를 Heap(힙) 공간에 생성하고이 생성 위치에 대한 주소를 가지고 Object Reference(개체 참조)하는  방식으로 사용합니다. 개체를 생성하는 과정에서 Heap 공간에 개체를 할당하기 위한 공간이 부족한 경우 발생하는데,이 경우 가비지 컬렉터는 새로운 개체를 생성할 수 있는 공간을 확보할 수 없습니다. 드물게 가비지 컬렉션을 수행하는데 과도한 시간이소비되..

[ Error ]/JAVA 2024.05.29

[ Java ] java.util.stream.IntStream 주요 메서드 정리

오늘은 토이 프로젝트 생성하면서 테이블 생성 테스트 코드 작성할 때활용했던 java.util.stream.IntStream에 대해 포스팅해 보겠습니다😄  주요 메서드 정리 및 개념에 대해 다루고 실전 예제 코드를 통해서 각 메서드에 장단점을 알아보는 시간을 가지겠습니다 ❗ IntStream - 소개 IntStream은 Java 8에서 도입된 Stream API의 일부분으로,'int' 기본형에 특화된 스트림입니다. Stream API는 Java에서 함수형 프로그래밍 스타일을 사용하여 데이터 처리를 할 수 있도록 도와주고IntStream은 'Stream' 와는 다르게 오토박싱/언박싱의 오버헤드가 없기 때문에 성능적으로 유리합니다. IntStream은 여러 가지 방법으로 다음과 같이 생성해서 사용할 수 있습..

[ JAVA ]/JAVA 2024.05.23

[ JPA ] Java Persistence Query Language(JPQL , 객체 지향 쿼리 언어)(2)

Intro 객체 지향 쿼리 언어에 대한 포스팅을 이어가 보겠습니다. 이전 포스팅에서 페이징 처리 함수까지 알아봤습니다. JPQL 문법에 대해 알아보시는 분들은 아래 포스팅을 참고해 주시면 도움이 될 거 같아서 올려보겠습니다. [ JPA ] Java Persistence Query Language(JPQL , 객체 지향 쿼리 언어)(1) Intro JPA는 엔티티 객체를 중심으로 개발하기 때문에 검색 쿼리 실행하면 테이블 대상이 아닌 엔티티 객체를 대상으로 요청을 보내야 한다. 하지만 모든 데이터베이스 데이터를 객체로 변환해서 drg2524.tistory.com 집합과 정렬 집합 함수와 정렬 기능은 SQL문 작성할 때 사용할 수 있는 함수들을 별도의 처리 과정 없이 사용할 수 있다. 예를 들어서 집합 함수..

[ ORM ]/JPA 2024.04.11
728x90