일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Stream
- 자바
- port&adapter architecture
- intellij 플러그인 만들기
- java 로 intellij 플러그인
- 오라클쿼리테스트사이트
- hibernate 쿼리실행 순서
- 컬럼명중복
- Kafka
- 쓰기지연저장소
- 로컬에서 플러그인 추가
- plugin local
- 쿼리실행순서
- group by group by rollup 차이
- error 2002 (hy000): can't connect to local mysql server through socket '/tmp/mysql.sock' (2)
- Oracle
- 스트림
- 플러그인 로컬 테스트
- intellij 플러그인 개발
- Flush
- 쓰기지연sql저장소 쿼리실행순서
- 쿼리테스트사이트
- dto매핑우선순위
- sql 테스트 사이트
- JPA
- 포트앤어댑터 아키텍처
- Java
- ls -lgaf
- IntelliJ
- 중복컬럼dto매핑
- Today
- Total
목록전체 글 (45)
개린이 탈출기
스트림을 이용하여 Dto 리스트를 정렬하던 중 NullPointerException 을 마주하게 되었다. Jpa를 통해 Dto 리스트를 전달받아 자바에서 정렬처리를 하려고 했더니 NullPointerException 예외가 발생한 것이다.실제로 데이터를 확인해보니 정렬하려는 컬럼이 nullable 하였고 정렬 중 null 값을 마주하여 정상적으로 처리하지 못하고 NullPointerException 이 발생한 것 같아 보였다. 해당 상황을 재현해보자면 하단의 코드와 같다. @Getter @Setter @NoArgsConstructor @AllArgsConstructor public class Dto { private String nullableString; ..

인텔리제이에서 properties 파일을 열었을 때 다음과 같이 한글이 깨지는 현상이 발생했다. 이것저것 인코딩과 관련된 옵션을 고치다가 정답을 알아냈고 다음에 또 고생할까봐 기록을 남긴다. Settigns 창을 열어서 (단축키 : ctrl alt s )위의 Global Encoding 과 Project Encoding 의 값을 UTF-8 로 바꾸고아래 Default encoding for properties files: 를 UTF-8 로 수정해줘야 한다.그리고 하단의 Transparent native-to-ascii conversion 도 체크해줘야 한다.
JPA 를 활용하여 데이터를 관리하는 중인데 동일한 unique key 에 대한 delete 와 save 메서드를 사용하였더니 Duplicate Key 문제가 발생하였다. 결론적으로는 jpa를 통해 delete 관련 메서드를 호출해도 db에 동기화가 바로 일어나지 않고(직접 flush를 하거나 db 동기화가 일어나도록 하지 않는다면) 쓰기 지연 SQL 저장소에 쌓아두고 나중에 isnert 문과 함께 Db에 쿼리문을 보내준다. 이때 dbms 가 쿼리를 실행하기 전에 각 쿼리를 평가(최적화 및 실행 계획 등..)하는 과정에서 uniqueKey가 중복되는 insert문이 존재하므로 여기서 문제가 발생했던 것이다. 문제 원인실제 코드는 다음과 같다.public class MyEntity { @Id ..

처음보는 에러를 마주했다.무슨 에러일까 차근차근 에러메시지를 읽어보니, 그동안 몇번 발생했던 language level 과 관련된 오류 같아 보였다.그동안 하던대로 수정했는데 오늘따라 유독 프로젝트 빌드가 잘 되지 않아 어려움을 겪어서 평소보다 더 꼼꼼히 설정옵션을 읽어보았고, 그냥 내가 알게된 점을 조금 정리해두려고 한다. 오류 메시지java: diamond operator is not supported in -source 1.5 (use -source 7 or higher to enable diamond operator) 위의 메시지를 읽어보았을 때, diamond operator 는 1.5 소스에서는 제공되지 않으며 7 이상의 소스를 사용해야한다고 안내하고 있음을 알 수 있다.source 는 아마..
baseurl 의 기본값이 배포되는 환경에 맞춰 세팅되도록 하기 위하여 쿠버네티스 환경 별로 nameSpace 에 url 값을 세팅하여 사용할 수 있다. 예를 들어,Client 레이어의 클래스를 다음과 같이 지정하고@Servicepublic class MyClient { private final RestClient restClient; public MyClient( @Value("${myproject.baseurl.server:http://changable-server:100}") String baseUrl ) { // 하단의 코드는 springframework 에서 제공하는 RestClient 를 통해 RestClient 를 생성하는 로직임 RestClient.bui..

일할 때, 배포된 서비스를 사용하는 경우가 있었는데, 배포된 서비스가 잘 돌아가지 않는 경우가 종종 있었고, 그럴 때, argoCd를 확인하면 된다고해서급급하게 어떤 것을 보면 되는지 얼추 듣기만하고 알려주신 것들만 확인하곤 했다. 오늘 작업을 위해 회사 수석님이 작업을 위해 argoCd에 대한 간략한 설명을 해주셨는데,새롭게 들은 점을 정리하고 추가적으로 찾아보고 정리해 놓기 위해서 글을 작성한다.ArgoCd 보기 위의 argoCD는 여러 개의 그룹을 감지하고 있다.namespace 라고 적어둔 부분에 그룹의 이름이 올 수도 있고, application 이름 될 수도 있는 등 정하기 나름인 것 같다. 해당 영역으로 들어가보면 다음과 같은 화면을 볼 수 있다. cm : config map: 설정 파일과 ..

프로그램 실행 중 다음과 같은 예외를 마주했다. // 예외 메시지org.springframework.cglib.core.CodeGenerationException: java.lang.reflect.InaccessibleObjectException-->Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @7cb5..
개요학원에서 자바 프로그램을 만들 때는 그냥 학원에서 정해준 빌드도구를 가지고 수업시간에 사용한 build 파일들을 생각없이 복사해서 프로젝트를 만들었었다.그리고 회사에 와보니 하나의 프로젝트에 여러 개의 모듈이 존재했고, 각 모듈이 빌드 파일을 갖고 있었는데, 그 당시에는 주어진 업무를 처리하는데 급급하여 프로젝트의 구조나 Gradle 이 자바 프로젝트를 빌드하고 실행하는 과정에 대해서는 큰 관심을 줄 수 없었다.지금 약간의 시간이 남게 되어 Gradle 이 어떻게 자바 프로젝트를 읽고 빌드하고 실행하는지 그 과정을 가볍게 정리하며 공부해보고자 한다. 따로 기입하지 않은 출처는 모두 Chat GPT 에게 질문한 결과 혹은 업무를 하며 회사 선임님들이 알려주신 정보에서 나온 것이다. 가정. 모듈이 존재..
결론부터 말하자면스트림의 toList()를 사용하여 만든 컬렉션은 수정불가한 List를 반환하기 때문에 collect(Collectors.toList()) 로 코드를 수정하면 바로 해결 가능하다. 1. 문제 발생기존에 작업해 놓았던 코드를 예쁘게 다듬던 도중 다음과 같은 예외가 발생했다.java.lang.UnsupportedOperationException: null at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142) ~[na:na] at java.base/java.util.ImmutableCollections$AbstractImmutableCollection.addAll(ImmutableCollections.jav..
jpa 와 jdbcTemplate 을 함께 사용 중인데, Jpa로 엔티티를 조회해온 뒤, jdbcTemplate 으로 데이터를 수정하고 해당 값을 다시 조회하여 사용하는 과정에서 반영된 값을 db에서 다시 조회해와야만 하는 케이스가 발생했다. 예를 들어 jpa로 조회해온 A 테이블의 a1 엔티티를 수정하는데, A 테이블의 전체 개수(max 값) 를 A테이블의 serial_Number 컬럼에 저장해주어야 한다.이때, 전체 개수를 조회해오는 로직을 자바로 풀지 않고, 서브쿼리로 넣어 사용했다. 이러한 경우 다음과 같은 문제가 발생할 수 있다. 1. jpa 를 통해 a1 를 조회하면 a1은 영속성 컨텍스트에서 관리 됨 2. 이때, 조회해 온 'a1`의 `serial_Number` 의 컬럼 값을 수정하여 upd..