Spring/JPA(11)
-
Bulk Exel Data Insert 2부
엑셀을 사용하여 Bulk 차량 등록하기 기능 구현하기 2부 1부에서는 Excel 데이터를 서버에서 요청 VS Client에서 요청 하는 부분에 대해서 글을 작성하였다. (궁금하신 분들은 여기로 가주세요 💁🏻1부 바로가기) 2부에서는 정말 정말 많은 생각을 했었던 요청한 데이터들 차량번호, 차량코드, 등록날짜, 제조날짜, 업체, 지점들의 데이터를 어떻게 Save() 를 할 것인가...!! 에 대해서 공유해보려고한다. 가장 단순한 Save() 1부에서 언급했던 단건 차량 등록처럼 List carRequestDTO 가 들어와도 반복문을 사용해서 carRepository.save() 를 해주면 간단히 끝난다. 하지만 요청 차량이 500개면?? 실제로 이번에 400개의 차량을 등록해야하는 요청이 들어왔다. 그러면..
2022.06.20 -
Bulk Excel Data Insert 1부
엑셀을 사용하여 Bulk 차량 등록하기 기능 구현하기 차량등록하기 기능 분석 현재 다니고 있는 회사는 모빌리티 회사여서 단건 차량등록하기 기능이 있다. (ADMIN 페이지에서) 최근 운영팀에서 업체별로 등록해야하는 차량들이 증가하고 있기 때문에 여러차량들을 등록 할 수 있는 기능을 구현해달라고 기획자분에게 요청하였다. 이 기능 구현을 내가 맡게 되었는데, 기존 단건 차량 로직을 분석 후 기능을 구현하기로 하였다. 기존 단건 기능 로직 등록 요청할 때 업체 , 지점 을 DB에서 조회하여 없을 때는 InvalidParameterException 을 호출하고 있다. validateDuplicateCar 메서드로 DB에서 중복차량 검사를 하고 있다. (차량번호 Pattern은 @Vaildation 어노테이션을 ..
2022.06.20 -
Java8 Stream 특정 Key 중복제거
Java8 Stream 특정 Key 중복 제거 안녕하세요! 이번에는 제가 실무에서 겪었던 특정 키 중복제거를 위한 방법을 소개해보려고 합니다! 문제상황 엑셀 Bulk 등록을 하는 로직을 구현하는 중이었는데요! FE에서 다음과 같은 데이터를 JSON으로 배열로 보내주고 있었죠. @Getter @Setter @NoArgsConstructor @AllArgsConstructor public class UploadExcelCarsDTO { @NotBlank(message = "잘못된 modelCode 입니다.") private String modelCode; @NotBlank(message = "잘못된 차량번호입니다.") private String number; @Min(0) @Max(9999) private ..
2022.05.30 -
JPQL은 만능이 아니다!
Spring Boot JPA JPQL 문제 JPQL은 만능이 아니다 되게 오랜만에 글을 쓰네요! 입사를 하고 나서 바쁘고,, 돈을 받으니 하고 싶었던걸 하다보니 블로그 작성을 하지 않았는데 .. 껄껄 다시 작성하려고 합니당 이번에 맞닥드린 문제는 JPQL를 사용하면서 데이터를 뽑아낼 때 처한 문제를 풀어내보려고 합니다. 일단 제목이 스포를 해버렸네요ㅎㅎ 조회 쿼리 Client에서 RequestParam으로 데이터를 받아서 해당 되는 데이터를 DTO로 핏하게 보내주는 작업을 하고 있었습니다. @Query ( "SELECT new com.imaslab.fms.dtos.car.OnsiteServiceReceiverManageDTO(fu.id, fu.name, fu.phone, fc.name, rs.id, rs..
2021.12.23 -
[Spring JPA] 즉시로딩과 지연로딩
즉시로딩과 지연로딩 Member를 조회할 때 Team도 함께 조회해야 할까? 단순히 member 정보만 사용하는 비즈니스 로직 Println(member.getName()); 지연로딩 LAZY을 사용해서 프록시로 조회 @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @ManyToOne(fetch = FetchType.LAZY)//이 부분이 LAZY @JoinColumn(name = "TEAM_ID") private Team team; 지연로딩 지연 로딩 LAZY을 사용해서 프록시로 조회 Member member = em.find(Member.class, 1L); Team team = ..
2021.06.28 -
Spring JPA [상속관계 맵핑]
상속관계 매핑 관계형 데이터베이스는 상속 관계 X 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 상속관계 매핑 : 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 각각 테이블로 변환 ➔ 조인 전략 통합 테이블로 변환 ➔ 단일 테이블 전략 서브타입 테이블로 변환 ➔ 구현 클래스마다 테이블 전략 주요 어노테이션 @Inheritance(strategy = InheritanceType.XXX) JOINED : 조인 전략 @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn public class Item { @Id @GeneratedValue ..
2021.06.17