일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링 공통데이터
- thymeleaf
- 스프링 예외처리
- jpa hint
- 쉘스크립트
- password
- smtp
- spring 예외처리
- 예외처리
- 타임리프 예외처리
- 좋아요 기능
- 공인IP
- thymleaf
- 스프링부트
- 지연로딩
- 쿠키 #세션 #쿠키세션정리
- validation
- LazyInitializationException
- 낙관적 락
- HTTP API
- querydsl
- springboot
- jpa 성능최적화
- 비관적 락
- JPA
- JPA #N+1 #JPA API #API
- 사설IP
- 타임리프
- DATA JPA
- api 성능최적화
- Today
- Total
목록분류 전체보기 (19)
jiny
JPA Hint sql hint 처럼 기존에 실행되어야 하던 일부 로직을 개선하여 최적화가 가능하다. jpa에서는 트랜잭션 내부에서 member 를 조회해서 해당 member의 필드 값을 변경하면 트랜잭션 종료 시점에 스냅샷을 이용해 변경된 값을 감지하여 jpa가 update 쿼리를 실행해준다아래처럼 나이 10을 15로 변경하면 트랜잭션이 끝나고 update가 발생한다 영속성 컨텍스트 내부에는 아래처럼 되어있을 것 이고 트랜잭션이 끝날 때, 스냅샷과 엔티티를 비교하여 달라진 점이 있으면 update 쿼리를 전달한다 문제는 엔티티를 변경하지 않아도 스냅샷은 항상 저장한다. 즉 위에서 findMember.setAge(15); 를 호출하지 않으면 update 쿼리는 날라가지 않지만 영속성 컨텍스트는 언제 변경..
EntityGraph 는 JPQL을 사용하지 않고 페치 조인을 사용하는 기능이다 우선 Member 와 Team 이 다대일 관계이고, Member 에서 Team이 지연로딩 관계로 설정된 상황일 때 findAll() 메소드 호출 시, 멤버들을 모두 조회하기 위한 쿼리가 한번 나가고 for 문에서 각 멤버마다 속한 팀의 이름을 호출할 때 마다 team을 찾기 위한 쿼리가 추가로 나간다 1+N 문제가 발생하며, 연관된 엔티티를 한번에 조회하려면 아래처럼 페치조인이 필요하다 @EntityGraph 사용하기 JPQL을 사용하지 않고 아래처럼 엔티티 그래프 기능을 사용하여 페치 조인을 사용할 수 있다. - attributePaths 에 스트링 배열 형태로 연관된 엔티티 변수명을 적어준다 data-jpa에서 기본으로 ..
JpaRepository 를 상속받은 인터페이스를 만들면 data-jpa 에서 리포지토리 구현체를 만든다. 주요 지원 메서드 save(S) : 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합한다. delete(T) : 엔티티 하나를 삭제한다. 내부에서 EntityManager.remove() 호출 findById(ID) : 엔티티 하나를 조회하며 Optional로 반환 내부에서 EntityManager.find() 호출 getOne(ID) : 엔티티를 프록시로 조회한다. 내부에서 EntityManager.getReference() 호출 findAll(…) : 모든 엔티티를 List로 반환. 정렬( Sort )이나 페이징( Pageable ) 조건을 파라미터로 제공할 수 있다 1.쿼리 생성하는 방법 1-..
유효성 검사 실패시 사용자가 입력한 패스워드 필드는 초기화된다 Bean Validation 사용 시, FieldError 를 만들어 입력한 오류값을 저장하고 타임리프에서는 th:field 구문에서 FieldError에서 보관한 값을 사용해서 값을 찾아 출력해준다 하지만 type이 password인 경우는 보안상 항상 초기화되는 것으로 보인다 https://stackoverflow.com/questions/6540615/should-password-fields-retain-their-values-if-a-form-does-not-pass-validation 또한 form 에 입력한 텍스트는 브라우저에 기록되는데, 아래처럼 회원 가입폼 -> 잘못된 아이디,비밀번호 입력 -> 뒤로가기 -> 아이디가 그대로 있..