no image
JPA 핵심 메서드 정리
✅ JPA 핵심 메서드 정리메서드설명상태 변화DB반영 시점persist()새 객체를 영속 상태로 전환비영속 → 영속flush/commitfind()ID 기반으로 엔티티 조회없음 (바로 영속 상태 반환)즉시 SQL 실행remove()영속 상태 엔티티 삭제 예약영속 → 삭제 예정flush/commitmerge()준영속/비영속 객체 병합비/준영속 → 영속 (복사본 생성)flush/commitflush()영속성 컨텍스트의 변경 내용을 DB에 반영없음즉시 DB 반영detach()영속성 컨텍스트에서 분리영속 → 준영속해당 객체만 관리 종료clear()전체 영속성 컨텍스트 초기화모든 객체 준영속화모든 객체 관리 종료contains()해당 엔티티가 현재 영속성 컨텍스트에 있는지 확인상태 확인용없음 1️⃣ persis..
2025.04.14
no image
entityManager.persist()란?
✅ entityManager.persist()란?persist()는 비영속 상태의 객체를 영속 상태로 바꾸는 메서드야.JPA에서 객체는 총 4가지 상태 중 하나를 가짐:상태설명비영속 (new)DB랑 아무 관련 없는 순수 자바 객체영속 (managed)JPA가 관리 중인 상태. 1차 캐시에 올라가 있음준영속 (detached)원래 영속 상태였지만 JPA가 더 이상 관리하지 않음삭제 (removed)삭제 예약 상태. flush 시 DB에서 삭제됨 ✅ persist() 호출 흐름Orders order = new Orders(); // 비영속 상태order.setOrderCode("ABC123");entityManager.persist(order); // 여기서부터 영속 상태!이 때 JPA 내부에서는?영속성 ..
2025.04.14
no image
Hibernate실습, JPQL 활용2 - 4월 14일
package io.shi.dao.dao.hibernate;import com.querydsl.jpa.impl.JPAQueryFactory;import io.shi.dao.global.entity.Items;import io.shi.dao.global.entity.OrderItems;import io.shi.dao.global.entity.Orders;import jakarta.persistence.EntityManager;import jakarta.transaction.Transactional;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Repositor..
2025.04.14
no image
Hibernate실습, JPQL 활용 - 4월 14일
package io.shi.dao.dao.hibernate;import io.shi.dao.dao.mybatis.ItemMapper;import io.shi.dao.global.entity.Items;import jakarta.persistence.EntityManager;import jakarta.persistence.NoResultException;import jakarta.transaction.Transactional;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Repository;import java.util.List;import java.util...
2025.04.14
no image
Hibernate란 - 4월 11일
Hibernate의 첫 번째 실습은 가장 기초적인 JPA 동작 원리를 이해하는 데 초점이 맞춰져 있다. 주요 학습 목표는 Entity, EntityManager, 영속성 컨텍스트, 트랜잭션, 쓰기 지연, 캐시, 준영속 상태 등을 코드 기반으로 실습해보는것!!!  📁 프로젝트 구조 및 핵심 클래스 소개1. Member 엔티티 클래스package io.shi.domain.eg1;import jakarta.persistence.Entity;import jakarta.persistence.Id;import lombok.*;@Getter@Entity@NoArgsConstructor(access = AccessLevel.PROTECTED)public class Member { @Id private St..
2025.04.11
no image
JPA- 4월 10일
package io.shi.dao.global.entity;import jakarta.persistence.*;import lombok.Builder;import lombok.Getter;import lombok.NoArgsConstructor;import java.time.LocalDateTime;import java.util.Objects;@Getter//@Builder@Entity@Table(name = "items")@NoArgsConstructorpublic class Items { @Id @Column(name = "item_id") @GeneratedValue(strategy = GenerationType.IDENTITY) //주키가 identity 타입으로 주었다 pr..
2025.04.10
no image
Mock란? - 4월 10일
👀전체 코드package io.shi.dao.dao.mybatis;import io.shi.dao.global.entity.Items;import io.shi.dao.util.TestUtils;import lombok.extern.slf4j.Slf4j;import org.junit.jupiter.api.BeforeEach;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import org.junit.jupiter.api.extension.ExtendWith;import org.mockito.Mock;import org.mockito.junit.jupiter.MockitoExtension;import static org..
2025.04.10
no image
Mock이란? - 4월9일
🔍 1. Mock이란?✅ Mock은 "가짜 객체"를 말해실제 의존 객체(여기선 ItemMapper)를 진짜로 실행하지 않고도,테스트하고 싶은 코드(MyBatisItemRepository)만 단위로 따로 떼서 테스트할 수 있도록 도와주는 가짜 객체야. package io.shi.dao.dao.mybatis;import io.shi.dao.global.entity.Items;import lombok.extern.slf4j.Slf4j;import org.junit.jupiter.api.BeforeEach;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import org.junit.jupiter.api.extension.E..
2025.04.10
no image
MyBatis란?
MyBatis는 SQL을 XML이나 어노테이션으로 분리해서 깔끔하게 관리할 수 있는 SQL Mapper 프레임워크야. JPA처럼 객체-테이블 매핑은 직접 안 해주지만, SQL을 내가 원하는 대로 컨트롤할 수 있다는 장점이 있어. ✅ MyBatis 기본 개념요소설명Mapper XMLSQL이 정의된 XML 파일Mapper InterfaceXML에서 정의한 SQL을 호출하는 인터페이스SqlSessionFactoryMyBatis 설정을 읽고 SqlSession을 만드는 팩토리SqlSession실제 SQL 실행을 담당하는 객체  🔧 1. 기본 설정하기 (build.gradle)dependencies { implementation 'org.mybatis.spring.boot:mybatis-spring-boo..
2025.04.09