Development/Troubleshooting 5

org.h2.jdbc.JdbcSQLSyntaxErrorException 해결하기

들어가며 JPA 학습 중 테이블 생성과정에서 아래 오류가 발생했다. org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table if exists order cascade " via JDBC Statement 바로 구글링을 해봤다. 문제의 원인 예제 코드의 엔티티 중 "Order"가 문제였다. SQL의 예약어를 엔티티 이름으로 사용하는 경우 위와 같은 문제가 발생한다. Order는 Order by에 사용되는 키워드다. 다른 예시로 이 글에서는 "Group"을 엔티티 이름으로 사용하여 동일한 문제가 발생했던 것을 알 수 있었다. Group 또한 Group by의 예약어로 사용된다. 해결방안 근본적으로 예약..

HHH000206: hibernate.properties not found 오류 해결하기

들어가며 처음 Hiberate를 공부하며 맞이한 오류이기에 이렇게 기록으로 남겨 보려고 한다. 환경설정부터 오류가 나니 적잖이 당황스럽지만 조금의 구글링으로 원인을 파악할 수 있었다. 오류발생 환경 [ 오류 발생 환경설정 ] JDK 11 Hibernate 5.3.7.Final H2 1.4.200 [ 변경한 환경설정 ] JDK 8 Hibernate 5.3.7.Final H2 1.4.200 오류 내용 및 원인 원인을 찾아보니 JDK 11에서는 기존의 내장되어있던 JAXB가 사라지게 되었다. 만약 JDK 버전을 변경하지 않고 사용하시려면 별도의 JAXB 라이브러리를 추가하여 문제를 해결 할 수 있다. 아래는 오류에 대한 Stacktrace 이다. Exception in thread "main" java.lan..

폐쇄망에서 K사 로그인API 적용 후기

폐쇄망에서 개발은 정말 신경 써야 할 것이 많다. 그중에 대외 시스템과 연계하는 개발은 더더욱 신경 쓸 것이 많다. 이번에는 F 생명보험사의 K사 로그인 방식을 도입하기 위해 시행착오를 겪었던 후기를 올린다. 절차는 다음과 같았다. K사의 개발 가이드문서 및 샘플 소스를 받는다. 인프라 팀과 협의하여 대외망으로 연결할 IP 및 도메인 이름을 정의하여 K사에 전달한다. K사는 해당 IP를 서비스에 등록하여 테스트를 진행할 수 있도록 한다. 내부 서버와 대외망으로 연결할 수 있는 IP를 연결한다. 샘플 소스를 기반으로 테스트 데이터를 API 요청을 보낸다. 정상적으로 데이터가 응답되는지 확인한다. 간단해 보이는 절차지만, 전체 흐름을 개발자가 혼자 통제하는 것이 아니기 때문에 과정마다 신경 써야 할 곳이 많..

[개발 Tip] Intellij에서 lombok을 인식하지 못하는 경우 해결방법

인텔리제이를 처음 쓰다보니 낯설게 되어 간단한 오류에도 허둥지둥하게 되는데요, 그 중 가장 오랜기간 괴롭혔던 이슈를 소개하고자 합니다. Spring initializr을 통해 스프링 부트 프로젝트를 생성하다 보니 자연스럽게 lombok을 사용하게 됐습니다. 하지만 컴파일시에 자꾸 빨간줄이 가고 설정에서 구글링에서 제시하는 대부분의 해법인 Enable Annotation Processing을 체크해도 사라지지 않아 적잖이 당황했습니다.(런타임 시에는 또 정상적으로 돌아갑니다) 그러던 중 Stackoverflow에서 maven이나 gradle에 주입하는 것 말고 인텔리제이 플러그인 중 'lombok'을 설치해보라는 글이 있었고 이를 설치 후 재시작하니 한방에 해결되었습니다. 평소 줄 맞추는 것..

금액표시할 때 쉼표(,)찍는 방법

개발을 하다보면 금액을 다룰 때가 참 많습니다. 저 역시 요즘 하는 업무에서 금액을 표시할 때가 많은데요, 간단하게 금액을 표시하는 방법을 데이터베이스(서버사이드)와 자바스크립트(클라이언트사이드)에서 표시하는 방법을 설명하겠습니다. 먼저 데이터베이스입니다. /*오라클 기준으로 작성했습니다*/ SELECT TO_CHAR('월급', '999,999,999,999,999') AS '월급' FROM '금액' 이는 TO_CHAR 함수에 포멧을 지정하여 처리하는 방법입니다. 꼭 alias를 지정해서 데이터 매핑에 실수하지 않길 바랍니다. 다음으로는 자바스크립트입니다. const pay = 5000000; // 숫자로 표기된 금액 const strPay = pay.toString().replace(/\B(?=(\d{..