일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Git
- MySqlType
- httppie
- 스프링부트
- JPA값타입
- embededtype
- JPAmapping
- JPAproxy
- jpa
- sql
- 자바제너릭
- JDBC connection pool
- springboot기본설정
- 제이피큐엘쿼리
- 이해와 원리
- springbootproxy
- JPA Hint & Lock
- 임베디드타입
- 데이터베이트h2
- gitinitial
- dockercmd
- Open EntityManager
- 스프링부트기본설정
- JPA프록시
- springbootH2
- OSIV
- jpqlquery
- spring
- javageneric
- 에이치투데이터베이스
Archives
- Today
- Total
빡코
[스프링 데이터 JPA] JPA Hint & Lock 본문
//Lock 힌트
@Lock(LockModeType.PESSIMISTIC_WRITE)
List<Member> findLockByUsername(String username);
@Test
public void LockTest() throws Exception {
//given
Member member1 = memberRepository.save(new Member("member1", 10));
em.flush();
em.clear();
//when
List<Member> result = memberRepository.findLockByUsername("member1");
}
JPA HintJPA 쿼리힌트(SQL 힌트가아니라 JPA 구현체 하이버네이트에게 제공하는 힌트)
//readOnly는 변경 감치 체크를 하지 않기 때문에, 업데이트를 진행하지 않는다.
@QueryHints(value = @QueryHint( name = "org.hibernate.readOnly", value = "true"))
Member findReadOnlyByUsername(String username);
@Test
public void queryHint() {
//given
Member member1 = memberRepository.save(new Member("member1", 10));
em.flush();
em.clear();
//when
Member findMember = memberRepository.findMemberByUsername("member1");
findMember.setUsername("member2");
em.flush();
}
@Lock 실행 쿼리
select
member0_.member_id as member_i1_0_,
member0_.age as age2_0_,
member0_.team_id as team_id4_0_,
member0_.username as username3_0_
from
member member0_
where
member0_.username=? for update
'Java > JPA' 카테고리의 다른 글
[스프링데이터 JPA] Auditing (0) | 2023.05.11 |
---|---|
[스프링 데이터 JPA] 사용자 정의 리포지토리 구현 (0) | 2023.05.11 |
[스프링 데이터 JPA] fetchJoin과 EntityGrap (0) | 2023.05.11 |
[스프링 데이터 JPA] 벌크성 수정 쿼리 (0) | 2023.05.11 |
[스프링 데이터 JPA] 예제 도메인, 공통인터페이스?, 쿼리 메서드, 반화타입 (0) | 2023.05.10 |