Java22 [Java] JMH 벤치마크 중 org.openjdk.jmh.runner.RunnerException: ERROR: Another JMH instance might be running. 증상 gimgihyeon@gimgihyeon-ui-Mac-Studio programming-algorithms % ./gradlew jmh Starting a Gradle Daemon, 1 busy Daemon could not be reused, use --status for details > Task :jmh FAILED ERROR: org.openjdk.jmh.runner.RunnerException: ERROR: Another JMH instance might be running. Unable to acquire the JMH lock (/Users/gimgihyeon/Desktop/kghworks/workspace_intellij/programming-algorithms/build/tmp/jmh.. 2023. 12. 27. [Java] java.lang.UnsupportedOperationException ImmutableCollections java.lang.UnsupportedOperationException at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142) 오류 메시지에 답이 나와있다. ImmutableCollection에 대한 UnsupportedOperationException이다. 아래처럼 재현 가능하다. @Test @DisplayName("리스트 수정 테스트") public void unsupportedOperationException() { List aespaList = List.of("karina", "winter", "giselle"); assertThrows(UnsupportedOperationException.class, () ->.. 2023. 12. 20. [JPA] Spring Boot JPA 초간단 CRUD 테스트 작성하기 목차 Spring initializr 의존성 추가 Datasource / Hibernate 설정 Entity 정의 테스트 추가 실행 개발환경 Java 17 Spring Boot 3.2.0 Gradle 8.4 H2 Database Spring Data JPA Lombok spring initializr 아래에서 개발환경에 맞게 스프링 프로젝트 생성 https://start.spring.io/ 의존성 추가 plugins { id 'java' id 'org.springframework.boot' version '3.2.0' id 'io.spring.dependency-management' version '1.1.4' } group = 'com.sample.jpa' version = '0.0.1-SNAPSHOT.. 2023. 11. 29. [Java] JPA N+1 원리 이해하기 목차 N+1 문제 정의 N+1 원인 1. 연관관계의 주인이 누구인가 N+1 원인 2. JPQL은 연관객체의 fetchType을 모른다 N+1 해결방법 정리 참고 포스팅에는 아주 간단히 아래 2개의 테이블을 사용한다. @Entity @Table(name = "team") public class Team { @Id private String id; private String name; @OneToMany(mappedBy = "team", fetch = FetchType.LAZY) private List members = new ArrayList(); // 생략 } @Entity @Table(name = "member") public class Member { @Id private String id; priv.. 2023. 11. 14. [개발일지] 채번(採番) 개발하기 채번(採番)이란 번호를 딴다는 의미로 번호표의 목적으로 DBMS에서 PK 혹은 고윳값을 부여할 때 사용하는 용어다. 일본말이라고 함. 채번되는 값이 업무적으로 의미 있는 값이건, 단순 고윳값이건 각각의 목적이 충분히 존재한다. 나의 경우 고객에게 노출하는 값은 아니었지만 고윳값을 가지면서 SELECT도 가능해야 했다. (이건 이후에 후술) 웹서비스에서 채번 하는 업무는 꽤 있다. (계좌번호, 자동차 번호판 등) 단순히 sequence (ORACLE), auto_increment (MYSQL) 등 사용해 채번 할 수 있지만 그 이상의 요구사항이 존재한다. 채번 결과가 어떤 포맷을 유지해야 한다던지 등..(계좌번호, 자동차 번호판 등) 이번 포스팅에서는 채번 프로세스를 어떻게 개발하게 되었는지 과정과 결과를.. 2023. 10. 5. [개발일지] Java application에서 RDBMS에 bulk insert 목차 step1. 최적의 bulk insert sql script 찾기 step2. Java 구현 : UNION ALL batch insert Spring Data JPA saveAll과의 성능 비교 정리 다들 엑셀을 참 좋아한다. 몇만 개의 row를 가지고 엑셀로 이리저리 조작하는 사업부서 분들을 보면 경이롭다. 동시에 컴퓨터가 매우 힘들어하는 게 옆에서도 느껴진다. 아무튼 이번에 엑셀 업로드 기능으로 대용량으로 테이블에 insert 할 기능이 생겼다 (최대 수만 건 규모). 이런 대용량 insert는 실제 요구사항이 있는 편이다. 사업 부서에서 이벤트 소스를 모아 엑셀 파일로 개발팀에 전달한다던지, 일정 기간 동안 소스를 모집해서 디비 테이블에 넣는다던지, 백오피스 시스템에서 엑셀 업로드 기능을 활용.. 2023. 9. 21. 이전 1 2 3 4 다음