일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPAmapping
- JPA프록시
- jpa
- gitinitial
- Git
- 스프링부트
- springbootproxy
- 데이터베이트h2
- sql
- 이해와 원리
- jpqlquery
- 제이피큐엘쿼리
- MySqlType
- springboot기본설정
- javageneric
- 임베디드타입
- dockercmd
- embededtype
- OSIV
- httppie
- JPAproxy
- JPA Hint & Lock
- springbootH2
- Open EntityManager
- 스프링부트기본설정
- 자바제너릭
- JDBC connection pool
- 에이치투데이터베이스
- JPA값타입
- spring
- Today
- Total
목록전체 글 (69)
빡코
@Repository적용: JPA 예외를 스프링이 추상화한예외로 변환 @Transactional트랜잭션적용 JPA의 모든 변경은 트랜잭션 안에서 동작 스프링데이터 JPA는 변경(등록, 수정, 삭제) 메서드를 트랜잭션처리서 비스계층에서 트랜잭션을 시작하지 않으면 리파지토리에서 트랜잭션시작 서비스계층에서 트랜잭션을 시작하면 리파지토리는해당트랜잭션을전파받아서 사용 그래서 스프링데이터 JPA를 사용할 때트랜잭션이 없어도 데이터등록, 변경이 가능했음 (사실은 트랜잭션이 리포지토리계층에 걸려있는 것임) @Transactional(readOnly = true) 데이터를 단순히 조회만 하고 변경하지 않는 트랜잭션에서 readOnly = true옵션을 사용하면 플러시를 생략해서 약간의 성능향상을 얻을 수 있음 자세한 내..
도메인클래스컨버터 *조회용으로만 사용할 것 HTTP 파라미터로 넘어온 엔티티의 아이디로 엔티티 객체를 찾아서 바인딩 package study.datajpa.controller; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import study.datajpa.entity.Member; import study.datajpa.repository.MemberRep..
엔티티를 생성, 변경할 때 변경한 살마과 시간을 추적하고 싶을 때 사용한다. 등록일, 수정일, 등록자, 수정자 @MappedSuperclass //속성들을 내려서 테이블에서 생성이된다. package study.datajpa.entity; import javax.persistence.Column; import javax.persistence.MappedSuperclass; import javax.persistence.PrePersist; import javax.persistence.PreUpdate; import java.time.LocalDateTime; @MappedSuperclass //속성들을 내려서 테이블에서 생성이된다. public class JpaBaseEntity { @Column(upda..
1. 사용자 정의 인터페이스 생성 public interface MemberRepositoryCustom { List findMemberCustom(); } 2. 사용자 정의 인터페이스를 구현할 구현 클래스 생성 @RequiredArgsConstructor public class MemberRepositoryImpl implements MemberRepositoryCustom { private final EntityManager em; @Override public List findMemberCustom() { return em.createQuery("select m from Member m") .getResultList(); } } * 사용자 정의 리포지토리 구현시, 구현 클래스 명명 규칙 JpaRep..
//Lock 힌트 @Lock(LockModeType.PESSIMISTIC_WRITE) List findLockByUsername(String username); @Test public void LockTest() throws Exception { //given Member member1 = memberRepository.save(new Member("member1", 10)); em.flush(); em.clear(); //when List result = memberRepository.findLockByUsername("member1"); } JPA HintJPA 쿼리힌트(SQL 힌트가아니라 JPA 구현체 하이버네이트에게 제공하는 힌트) //readOnly는 변경 감치 체크를 하지 않기 때문에, 업데이..
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/ Spring Data JPA - Reference Documentation Example 119. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") void del docs.spring.io Member와 Team은 N:..