Java/JPA(7)
-
[LG U+ 유레카 3기] Spring Data JPA find() 메서드 실습
Spring Data JPA find() 메서드 실습 - Student 검색 패턴 정리❶ 상황 설명이번 오전 실습에서는 Spring Data JPA의 메서드 이름 규칙 기반 조회(find)를 집중적으로 연습했다.특히 Student 엔티티를 대상으로 다양한 검색 패턴을 만들어 보는 것이 목표였다.단일 조건 조회: findByName()복합 조건 조회: findByEmailAndPhone(), findByEmailOrPhone()문자열 패턴 조회: StartingWith, EndingWith, Containing, Like정렬: findAllByOrderByNameDesc()범위 검색: findByIdBetween()핵심은 “쿼리를 직접 안 써도, 메서드 이름만으로 조건과 정렬을 표현할 수 있다”를 몸으로 ..
2025.11.26 -
[LG U+ 유레카 3기] Spring Data JPA CRUD + Lombok + 패턴 실습 정리
Spring Data JPA CRUD + Lombok + 패턴 + 레이어드 아키텍처 한 번에 정리1. 오늘 실습 상황 정리이번 실습에서는 Spring Boot + Spring Data JPA + Lombok 조합으로 Student 테이블 CRUD + 페이징을 구현하고,추가로 레이어드 아키텍처 개념, Lombok의 역할, Spring Data JPA 구조, Builder 패턴, Singleton 패턴까지 연결해서 정리했다.구조는 다음처럼 구성했다.entity : Student 엔티티repository : StudentRepository (JpaRepository 상속)service : StudentServiceCrud / StudentServiceCrudImplcontroller : StudentContr..
2025.11.25 -
[LG U+ 유레카 3기] JPA N+1 · Fetch Join · JPQL Join
오늘은 JPA를 사용할 때 반드시 알아야 하는 N+1 문제와 이를 해결하는 fetch join, 그리고 JPQL Join 문법을 실습 중심으로 정리한 날이다.실제 Hibernate 로그가 어떻게 출력되는지 직접 보면서 이해하는 “핵심 실습”이었기 때문에 내용을 정확히 정리해두면 향후 프로젝트/JPA 최적화에 큰 도움이 된다.❶ N+1 문제란?기본 엔티티 목록을 조회하는 SELECT(1) 후, 각 엔티티가 가지고 있는 연관 엔티티를 N번 추가로 조회하며 발생하는 비효율이다.String jpql = "select o from Orders o";List list = em.createQuery(jpql, Orders.class) .getResultList();Hiberna..
2025.11.20 -
[LG U+ 유레카 3기] 순수 JPA 복합키 실습(@IdClass & @EmbeddedId)
오늘 오후 실습에서는 JPA에서 자주 등장하는 난제 중 하나인 복합키(Composite Key) 를 두 가지 방식으로 직접 다뤘다.즉, 하나의 테이블(엔티티)이 두 개 이상의 컬럼으로 Primary Key를 구성하는 상황을 실제 코드로 구현하여, Hibernate가 어떤 방식으로 매핑하고 테이블을 생성하는지 확인하는 실습이었다.Spring JPA와 가장 크게 다른 점EntityManagerFactory(EFM)를 개발자가 직접 생성HibernatePersistenceProvider() 를 직접 사용트랜잭션을 begin() / commit() 으로 직접 제어@Service, @Repository, @Transactional 등의 Spring 전용 어노테이션 없음application.properties / ..
2025.11.17 -
[LG U+ 유레카 3기]순수JPA 실습 — JPQL (Java Persistence Query Language)
🧩 JPA 실습 ⑤ — JPQL (Java Persistence Query Language)이번 실습에서는 JPQL의 기본 개념과 Typed Query, 파라미터 바인딩을 학습했다.JPQL은 SQL처럼 보이지만, 실제로는 엔티티 객체를 기준으로 질의하는 객체지향 쿼리 언어다.즉, “테이블명”이 아닌 “엔티티 클래스명(Book)”과 “컬럼명”이 아닌 “필드명(bookname, price)”으로 작성된다.❶ 프로젝트 폴더 구조JPABasic_JPQL ├─ src/main/java/ │ ├─ entity/ │ │ └─ Book.java │ └─ Test.java │ ├─ src/main/resources/ │ └─ META-INF/ │ └─ persistence.xml │ └─ ..
2025.10.20 -
[LG U+ 유레카 3기]순수 JPA 실습 엔티티 생명주기 (persist / find / merge / detach / remove)
🧩 JPA 실습 ③ — 엔티티 생명주기 (persist / find / merge / detach / remove)이번 실습은 JPA 엔티티의 전체 생명주기를 다루며, 각 메서드가 영속성 컨텍스트에 어떤 영향을 주는지를 직접 확인한다.결과적으로 JPA의 작동 원리를 완전히 이해할 수 있는 핵심 단계다.❶ 실습 목표persist() : 새로운 객체를 영속성 컨텍스트에 등록find() : DB 데이터를 객체화하여 1차 캐시에 저장merge() : 존재하면 update, 없으면 insert 수행detach() : 엔티티를 영속성 컨텍스트에서 분리remove() : 엔티티 삭제 (1차 캐시 및 DB 반영)❷ 코드 구성src/main/java/ ├─ config/MyPersistenceUnitInfo.java ..
2025.10.20