Develop/[JPA] (69) 썸네일형 리스트형 [JPA] 시퀀스 테이블 때문에 데이터가 꼬인다면? JPA는 엔티티를 생성하면 자동으로 테이블을 만들어준다.별다른 설정 없이 엔티티만을 만든다면, 테이블 + seq테이블의 구조로 생성이 된다. 1. Person, Person_seq 테이블이 된다.만약에 Person테이블에 데이터를 강제로 업데이트를 치거나, 데이터를 삽입하면해당 key에 대한 에러가 발생한다.duplicate key가 된다. 왜이럴까? Person_seq는 1을 보고있으나, Person에는 이미 1이 들어가 있는 경우가 되기 때문이다."이러한 경우에는 seq 테이블을 새로 만들거나, 시퀀스를 새로만들어 줘야한다" 아래처럼 하자, 참고로 이미 만들어진 시퀀스는 initvalue를 변경한다고해도, 값이 반영 되지 않는다즉, 덮어씌우지 않는다는 말이다. @Entity@Getter@Setter.. [JPA] Nested Response List 처리 상속 적으로 Response가 필요한 경우가 있다. 부모 DTO가 있고 해당 디티오는 하위의 디티오 리스트를 가지고 있다. 해당 케이스는 아래와 같이 처리한다. package com.boiler.core.backend.normaladmin.reservation.dto; import com.boiler.core.backend.entity.Gym; import com.boiler.core.backend.entity.Member; import com.boiler.core.backend.entity.Reservation; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Sett.. [JPA] 스프링 Timezone 설정 + Aws, Docker mariadb timezone설정 타임존이 이상하게 되어있어서, 실제 쿼리를 수행할 때 다르게 결과를 보여준다. 1. DB timezone 설정 2. JPA 내 타임존 설정 위의 두가지를 크게 변경해주어야 한다. JPA 내 타임존 변경 jpa: open-in-view: false show-sql: true hibernate: ddl-auto: update jdbc: time_zone: Asia/Seoul properties: hibernate: show_sql: true format_sql: true package com.boiler.core.backend; import jakarta.annotation.PostConstruct; import org.springframework.boot.SpringApplication; import or.. [QueryDsl] Spring 3 버전 p6spy 적용 로깅에서 실제 동작하는 쿼리 로깅찍는 법 implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' logging: level: p6spy: info org: hibernate: type: descriptor: sql: trace package com.boiler.core.backend.config; import com.p6spy.engine.logging.Category; import com.p6spy.engine.spy.P6SpyOptions; import com.p6spy.engine.spy.appender.MessageFormattingStrategy; import jakarta.annotation.PostConstruct;.. [JPA] Querydsl & Paging Querydsl 처리 중 페이징처리 관련 정리 컨트롤러 @GetMapping("/member") @Operation(description = "회원 상세 조회") public PageImpl getAllMember( MemberReadDto memberReadDto,PageRequest pageRequest) { Pageable pageable = pageRequest.of(); PageImpl result = memberService.getAllMember(memberReadDto,pageable); return result; } 커스텀 페이징 객체 구현 package com.boiler.core.backend.member.dto.paging; import org.springframework.data... [JPA] JPAUpdateClause 사용 귀찮기도 하지만, 여러개 만드는 것보다 널처리해서 선택적 동적 쿼리를 생성 public Long patchMember(MemberDto tMember) { JPAUpdateClause clause = queryFactory.update(member); clause = MemberUpdateClause(clause,tMember); return clause.execute(); } JPAUpdateClause MemberUpdateClause(JPAUpdateClause jpaUpdateClause,MemberDto tMember){ if(member.address != null) jpaUpdateClause.set(member.address,tMember.address()); if(member.birth .. [Jpa] Querydsl build Setting QueryDsl 프로젝트를 빌드할때 오류가 났다. 사유는 Qclass의 중복 생성시도로 인한 오류이다. 아래와 같이 세팅해서 해결했다. 별건아니고 그냥 의존성 주입과 그래들 과정에서 번거롭게 또 삽질 싫어서 남겨둔다. 나는 쿼리 팩토리를 별도 빈으로 생성해서 서비스에서 주입 받아서 사용했다. 별도 레포지토리는 비즈니스 로직이 복잡할때만 ...할까 하다가 파일이 많아지면 신규 모듈 개발할때 귀찮아서 우선 서비스에서 끝냈다. plugins { id 'org.springframework.boot' version '3.1.2' id 'io.spring.dependency-management' version '1.1.2' id 'java' } group = 'com.boiler.core' version = '0... [JPA] ElementCollection Entity 에서 properties로 아래와 같이 저장하고싶을때가 있다. List tags 이를 해결하고 JPA는 어떻게 관리하는 지 알아보자 우선 내가 사용하는 Entity 타입이다. package com.boiler.flutterbackend.app.group.dto; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.time.LocalDateTime; import java.util.List; @AllArgsConstructor @NoArg.. 이전 1 2 3 4 ··· 9 다음 목록 더보기