JPA6 복합키 Entity Update 복합키로 생성된 엔티티를 수정할 때 //아래는 뽑아온 리스트 안에 업데이트 할 객체만 수정해주기 noticeReadHistoryList.stream() .filter(//바깥 foreach와 동일한지 체크) .forEach(noticeReadHistory -> { noticeReadHistory.setRegisterDt(LocalDateTime.parse(item.getRegisterYmdt(), formatter)); noticeReadHistory.setModifyDt(StringUtils.isNotBlank(item.getModifyYmdt()) ? LocalDateTime.parse(item.getModifyYmdt(), formatter) : null); }); //아래는 (업데이트를 위한) 새.. 2023. 9. 17. Sql In, Not In 절 (JDBC JPA) QueryDsl 활용 where 문의 or 대신 in을 활용하려 한다.이유는 or는 인덱스 활용 불가능이고 in은 인덱스를 활용할 수 있어 in 절이 속도 면에서 우위가 있다. - sql in 절의 특징sql in ( “1”,”2”) 의 경우는 내부 콤마가 or가 되고.sql Not In (“1”, “2”)의 경우는 내부 콤마가 and가 된다. - Query dsl 특징where(000, 000) 의 경우는 내부 콤마가 and가 된다 - 실제 동적쿼리 적용 코드 @Override public List findByReceiverIdAndStatusOrStatus(String receiverId, AcceptStatus... acceptStatuses) { List kdKDGifts = queryFacto.. 2023. 1. 17. QueryDsl 동적쿼리 사용 (SpringBoot, JPA) Tag 테이블에는 team_id가 외래키로 존재한다. 즉, 하나의 Team은 다수의 Tag를 가질 수 있다. -RequestBody (Rest API) -RequestTags @Data public class RequestTags { private List tags; } -TeamController /** * 태그로 전체 게시판 검색 */ @ApiOperation(value = "태그로 전체 게시판 조회 URL") @PostMapping("/api/tags") public ResponseTagsInTeam tagsInTeam( @RequestBody RequestTags requestTags, @PageableDefault(size = 10, sort = "createdDate", direction = .. 2022. 11. 25. JPA Update Query - UserService @Override @Transactional public void updateUserInfo(UserId userId, String changePhoneNum) { UserInfo findUserInfo = userInfoRepository.findByUserId(userId).get(); findUserInfo.setPhone(changePhoneNum); } 리포지토리를 통해 입력받은 UserId의 값으로 회원정보를 끌어와 영속성 컨텍스트에 저장한다. (UserId는 듀얼 메인키라서 클래스로 구분했음) Repository의 save를 호출하지 않아도 @Transactional이 있는 메서드의 영속성 컨텍스트의 값이 변경 되면 변경감지(더티채킹)으로 인해 update쿼리를 알아.. 2022. 10. 28. 이전 1 2 다음