FrameWork/Spring5 [Spring] spring boot 3.x & Java 21로 버전업! db & 코어 모듈들 버전업 해준 뒤, 프로젝트 버전 업 진행. gradle-wrapper.properties 설정 변경 그래들 버전 업distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip build.gradle 설정 변경 java 버전 지정 방법 변경java { toolchain { languageVersion = JavaLanguageVersion.of(21) }} querydsl 지정방식 변경 // queryDSLimplementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'annotationProcessor "com.querydsl:queryds.. 2024. 9. 19. [Java] Id 생성전략(UUID 선택 및 테스트) & spring JPA Bulk insert 대량의 데이터를 복사해줘야하는 일이 생겼는데, 현재 상황으로는 성능이 좋지 않아 bulk insert를 통해 성능 개선하고자 한다. 현재 서비스의 구조 및 현황 더보기 Spring Boot 2.6.6 hikari CP를 통해 db 연결 관리 (파라미터 스토어를 통해 db 정보 주입) MariaDB 10.6.8 ID 채번 전략 : identity 멀티 모듈 Entity 모듈을 nexus에 올리고, api 모듈에서 gradle로 라이브러리 추가하는 형태로 사용 멀티 테넌시 구조 공용 스키마와 각 회사들의 스키마로 구분되어 사용 bulk Insert ID 전략 선택 더보기 Id 생성 전략 IDENTITY(Auto increment): 데이터베이스에서 자동으로 ID 값을 생성하는 전략 SEQUENCE: 데이터베.. 2023. 5. 5. [Spring] OpenApi 3.0 Swagger Springdoc 적용 Swagger란? Swagger 는 REST API를 설계, 빌드, 문서화 및 사용하는 데 도움이 될 수 있는 OpenAPI Specification(REST API에 대한 API 설명 형식)을 기반으로 구축된 오픈 소스. 문서화 및 간단한 테스트를 제공한다. 대표적인 라이브러리로 springfox , springdoc 이 있는데, springdoc을 사용할 예정이다. springdoc 선택 이유 더보기 springfox는 업데이트가 잘되고 있지 않음. 2020 7월 3.0.0 버전이 마지막 업데이트. springdoc은 2019년 7월에 처음 나와서 지속된 업데이트 중. springdoc은 webflux 지원 및 더 발전되고 사용하기 쉬움. springdoc은 그룹 간, api 간 정렬도 가능하고, 어.. 2022. 12. 4. [Spring] JPA Auditing 사용법 JPA Auditing 서비스를 운영하다보면 DB에 데이터를 누가,언제 데이터를 생성했는지, 수정했는지를 저장해놓을 일이 있다. 이럴때마다, 엔티티별로 동일한 필드명을 달고, 데이터를 넣어주는 코드를 중복적으로 짜야하는 것을 없애기위해 Java ORM 기술인 JPA에서 제공해주는 기술이다. Auditing은 감사를 뜻하고, JPA Auditing은 해당 Entity를 지켜보다가 데이터를 조작할일이 생기면 자동으로 값을 넣어준다. javax에서도 제공하는 Auditing이 있지만(내부적으로 해당 기술 사용) @PrePersist @PostPersist @PreUpdate @PostUpdate Spring Data JPA에서 제공해주는 Auditing을 쓸 생각이다.(값도 자동으로 넣어주기 위해) Audit.. 2022. 8. 11. [Spring] @Async 비동기 멀티스레드 사용법 수정사항 2022-08-27 async 사용 시 비동기 스레드 exception 처리 CompletableFuture 사용법 추가 Async 사용계기 현재 마이다스 AI 역검 백엔드팀에 들어오게 되었는데, 과제 중 원활한 검증작업을 위한 응시 데이터를 만드는 것을 담당하게 되었다. 실제로는 응시자 한명 당 다양한 게임마다 응시를 본 데이터가 날라오게 되고, 이를 각각 저장하게 되는데 응시를 실제로 보기때문에 하나의 패킷이 날라오는데 시간도 오래걸리게되어서 부담이 작다고 생각했지만, 나는 한번의 요청으로 응시자를 생성해준 후 각 게임마다 문제를 불러오고 문제에 대한 응시데이터도 만들어주고 해야한다. 거기다 검증을 위해 응시자를 천명~만명을 만든다고하면, 만명에 대한 것을 만들어줘야하기때문에 굉장히 느려졌다.. 2022. 6. 25. 이전 1 다음