일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 임베디드타입
- Open EntityManager
- spring
- 제이피큐엘쿼리
- embededtype
- Git
- JDBC connection pool
- jpqlquery
- OSIV
- springbootH2
- JPAproxy
- MySqlType
- 이해와 원리
- 데이터베이트h2
- jpa
- springbootproxy
- 자바제너릭
- springboot기본설정
- 스프링부트
- JPA프록시
- 에이치투데이터베이스
- 스프링부트기본설정
- sql
- javageneric
- JPAmapping
- JPA Hint & Lock
- httppie
- gitinitial
- JPA값타입
- dockercmd
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 |