Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 정리
- java
- BACK-END
- oracle
- JavaScript
- 프론트엔드
- 오라클
- jsp
- node.js
- 스프링
- MySQL
- 자바
- 자바스크립트
- 프로그래머스
- 코드 테스트
- 스프링부트
- 코드테스트
- web
- 미니정리
- 데이터베이스
- 프런트엔드
- 쿼리
- 알고리즘
- spring
- jpa
- Next.js
- SQL
- 백엔드
- 디자인 패턴
- 서버
Archives
- Today
- Total
참치코더의 꿈 메모장
JPA / Named Query, 벌크 연산 기본 정리 본문
728x90

Named Query
- Named Query는 미리 이름을 붙여 정의해두는 정적 쿼리입니다.
- 프로젝트 빌드 시점에 JPQL 문법 오류를 잡을 수 있고, 재사용성도 높다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// 정의하는 방법
@Entity
@NamedQuery(
name = "Member.findByUsername",
query = "select m from Member m where m.username = :username"
)
public class Member {
...
}
// 사용 방법
List<Member> members = em.createNamedQuery("Member.findByUsername", Member.class)
.setParameter("username", "user1")
.getReusltList();
|
cs |
Named Query의 장점
컴파일 시점 검증
- 런타임이 아닌 애플리케이션 로딩 시점에 문법 오류를 감출한다.
재사용성이 높다.
- 여러 곳에서 동일 쿼리를 이름으로 호출이 가능하다.
성능 향상 가능
- 일부 JPA 구현체는 Named Query를 미리 파싱 및 캐싱 한다.
JPA 벌크 연산(Bulk Operation)
벌크 연산이란...
JPA에서 여러 엔티티를 한 번에 수정 또는 삭제하는 연산을 말한다.
SQL의 UPDATE, DELETE 문처럼 한 번의 쿼리로 대량 데이터를 조작한다.
|
1
2
3
4
5
6
7
8
9
10
11
|
int resultCount = em.createQuery("update Member m set m.age = m.age + 1")
.executeUpdate();
em.clear(); // 영속성 컨텍스트 초기화 // 이 코드는 실제 DB에 바로 반영되자만, 영속성 컨텍스트에는 반영되지 않는다.
// JPA의 일반적인 변경 감지는 엔티티를 조회 -> 변경 감지(Dirty Checking) 과정을 거치지만,
// 벌크 연산은 이 과정을 무시하고 바로 SQL을 날린다.
// 결과적으로, DB와 영속성 컨텍스트 간 데이터 불일치가 발생한다.
|
cs |
벌크 연산 후 주의사항
- 벌크 연산 후에는 꼭 영속성 컨텍스트를 초기화 해야 한다.
- em. clear()을 하지 않으면 영속성 컨텍스트와 실제 DB의 내용이 달라지기 때문에 습관적으로 벌크연산
(excuteUpdate( ))을 한다면, 초기화하는 버릇을 기르자.
728x90
'JPA' 카테고리의 다른 글
| JPA / N+1 문제 및 해결 방법 (0) | 2026.02.03 |
|---|---|
| JPA / 다형성 쿼리, 엔티티 직접 사용 정리 (0) | 2025.11.07 |
| JPA / 경로 탐색, 패치 조인 미니 정리 (0) | 2025.11.05 |
| JPA / JPA 프로젝션, 페이징 API, JOIN 정리 (0) | 2025.10.29 |
| JPA / 값 타입 컬렉션(Value Type Collection) 정리 (0) | 2025.10.27 |
Comments