지난 포스팅 : https://sas-study.tistory.com/415 지난번 포스팅에 이어서 AttributeConverter를 좀더 응용해서 개발하는 방법을 공유하고자 합니다. 우선 지난번 포스팅에서는 Entity 클래스에 선언된 Enum 타입의 갯수마다 AttributeConverter를 구현하여 각각 XXConverter 클래스를 생성하고 관리해주어야하는 단점이 존재했습니다. 우선 그 점에 있어서는 Entity 클래스의 멤버로 활용중인 Enum 타입을 하나로 묶을 상위 인터페이스가 필요하다고 생각했습니다. 코드로 보여드리자면 public interface EntityEnumerable { String getType(); String getName(); } public enum StudyTyp..
예전에 프로젝트를 했을 때, JPA에 String 클래스 타입으로 enum의 값을 넣었던것 같다. 코드로 예를 들면, // JPA Entity 클래스 ... @Entity public class Study { ... @Column(name = "study_type") private String studyType; } // StudyType Enum public enum StudyType { ONLINE("ONLINE", "온라인"), OFFLINE("OFFLINE", "오프라인"); private String type; private String name; // + type getter // + name getter } // Entity를 영속화하는 서비스 로직 public class StudyServi..
안녕하세요. 오늘은 BooleanExpression을 통해서 QueryDSL Repository의 표현을 좀더 직관적으로 볼 수 있도록 리팩토링하는 과정을 소개해보고자 합니다. 사실 이부분에 대해서는 그동안 BooleanBuilder라는 객체를 활용해서 where 절에 들어올 쿼리문을 생성했는데요. 여러 if절에 의해 다음과 같이 쿼리의 형태를 전혀 예상할 수 없을 정도로 바뀌었습니다. BooleanBuilder를 활용한 repository 메소드public List findLiveStudyBySearch(String title, Integer bigCity, Integer smallCity) { BooleanBuilder builder = new BooleanBuilder(); if (StringUti..
안녕하세요. 오늘은 Spring Data JPA를 활용할때 기본 Insert로 사용하는 save 기능과 saveAll 기능에 대한 성능 실험을 해보려고 합니다. Spring Data JPA의 경우 Bulk Insert의 경우 많은 성능 이슈를 발생시켜서 JPA로 bulk Insert를 하는 것을 권장하지는 않은 것으로 알려져 있는 것으로 알고 있습니다. 하지만 어느정도 로직이 있다면 이를 해소해볼 수 있을까? 하는 생각에 재미삼아 해보았으니 결과만 즐겨보시기 바랍니다. 어플리케이션과 서버의 스펙에 따라 차이가 발생할 수 있으니 제 스펙을 적어보겠습니다. 실험 스펙- LG 그램 17 2019년형- intel cpu i7 8세대- Ram 16GB- Spring Boot 2.3 버전, Maven- Starte..
안녕하세요. 오늘은 JPA를 이용하여 @Entity 클래스를 설계하는 도중 공통 속성인 created_at(insert time), updated_at(update time) 컬럼에 대하여 모든 @Entity 클래스에서 공통적으로 소유할 가능성이 보여 따로 공통 엔티티 클래스인 BaseEntity 클래스로 분리하는 방법에 대해 소개하겠습니다. 먼저 기존 코드입니다. @AllArgsConstructor @Getter @ToString @EqualsAndHashCode(of = "user_seq") @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Lon..
안녕하세요. 최근 사이드 프로젝트를 하면서 JPA를 활용하고 있는데요. JPA가 MyBatis를 추격하며 꽤 많이 채용공고나 라이브러리 검색 비율을 높여가고 있는걸로 알고있습니다. 이에 따라 저도 사이드 프로젝트에서 JPA를 활용해서 프로젝트를 진행중입니다. 그 중 스펙이 Spring Boot 2.2 버전, Spring Data JPA, H2 Database 를 이용하여 개발하고 있습니다. 일단 H2 데이터베이스는 Test 에서만 활용하고자 하였으나 AWS RDS 비용이 얼마나 나오게 될지 두려워서.. 이미 EC2로 임시서버 배포한 후, IOS/React 웹이 붙어서 AWS 요금이 얼마나 과금될지 두려워서 H2를 쓰려고 하였습니다. 그렇게 발생된 문제는! 서버를 내렸다가 배포하게되면 그동안 쌓였던 데이터..