전체 글 249

[Spring] QueryDsl, java17 Q파일 생성 안되는 이슈 해결

회사에서 업무를 수행하다가 Q파일이 생성이 안되서 원인을 분석했고, 나처럼 멍청한.. 실수하지 않았으면 하는 마음에 끄적여 보려고 한다. 원인 및 분석블로그 포스팅에서 해결 방안에 대해서 나 또한 다 시도를 해봤다. 1) build.gradle 의존성 주입 및 경로 설정 (유지)기존에 사용하던 코드와 동일하여 별도 설정하지 않음 2) Intelij > 프로젝트 구조 > QClass가 존재하는 디렉토리를 source로 설정(변화 없음)기존에 이미 설정되어 있음 3) Intelij > Setting > Build > gradle > 빌드 설정(Gradle -> Intelij) 변경 (시도하지 않음) 근본적인 Q파일 생성에는 영향을 주지 않는 설정 또한 변경하더라도 파일 생성 위치가 바뀌는 것으로 별도 시도하..

[Spring] Composite id class must implement Serializable 오류 해결

안녕하세요 세기무민입니다. 오랜만에 오류 해결 포스팅으로 찾아왔습니다. 오류 현상Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Composite id class must implement Serializable: ~~~ 위의 오류가 발생하는 원인은 기본키를 복수로 지정했을 때 직렬화를 해야한다는 의미입니다. 보통 키를 복수로 지정할 경우 복합키를 사용하게 되는데 복합키의 경우도 직렬화가 필요하다. JPA는 엔티티를 영속성 컨텍스트와 2차 캐시에 저장하여 관리하는데 복합키를 전송하거나 저장하려면 직렬화가 필요 분산 처리 시스템(클러스터링 환경)에서 활용이 가능한..

[프로그래머스] 덧셈식 출력하기

문제 내용 문제 풀이a, b 값을 더하여 c를 구하면 된다.다만, a + b = c 구조를 문자열로 추출해야 한다는 점이 포인트이다.나는 정수 포멧팅 방법을 이용하여 처리하였다.a, b = map(int, input().strip().split(' '))str = '%d + %d = %d'print (str%(a, b, a+b))통과를 한 것은 맞으나, 더 간결하게 사용하는 방법이 있길레 참조해봤다.print(f"{a} + {b} = {a + b}")위의 방식의 경우 파이썬 3.6 이상부터 파이썬에 f-string을 사용할 수 있게 되었는데 포멧팅 방식보다는 조금 더 간결하게 사용할 수 있으며, 요즘 많이 사용하는 방식이라고 한다. 이에 따라 향후에는 f-string을 활용한다면 조금 더 쉽게 풀 수 있..

[VScode] VScode java CheckStyle 적용하기

서론최근 회사 업무 외적으로 주변 지인과 함께 팀 프로젝트를 틈틈히 하고 있는데 개발 툴로는 Vscode를 사용하고 있다.개발 툴이라고 하기에는 편집기의 기능을 가진 Vscode로 사용하면서 생각외로 플러그인의 의존성이 커지고 있다. 백앤드 개발을 하다보면 코드 정렬을 위해 CheckStyle을 적용하는 편인데 VScode에서도 CheckStyle 적용이 가능한 방법이 있어서 소개해보려고 한다. Java Formatter 설정 Java Formatter 설정 > Settings.json 클릭  Settings.json 설정 파일 추가 "java.format.settings.url": "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclip..

[JPA&QueryDSL] QueryDsl이란 무엇인가?

서론Spring Boot 프로젝트를 개발 및 운영하다보면 MyBatis라는 라이브러리를 사용해서 쿼리를 DB로 요청할 수 있으나 최근 들어서 JPA를 이용하는 서비스가 많아지고 있는 추세이다. 쿼리 운영 유지보수 측면에서 고려해봤을 때 복잡한 쿼리가 많은 경우 Native Query를 활용하지 않고 MyBatis 라이브러리를 사용하는 경우도 종종 있다.JPA에서 제공하는 쿼리 메소드를 사용해도 기본적인 CRUD의 경우 어렵지 않다. 다만 복잡한 쿼리 혹은 요구사항에 따라 JPA에서 제공해주는 인터페이스로 활용이 어려울 경우 QueryDSL을 사용하게 된다.인터페이스로만 구현할 경우 복잡성과 유지보수 측면에서 효율적이지 못함(가독성이 떨어짐) 이에 따라 Spring Boot 프로젝트에 QueryDSL을 함..

[Cache] Redis란 무엇일까?

회사 업무 중 트래픽이 많아 대용량 처리를 하는 서비스가 있다.해당 서비스의 경우 트래픽도 트래픽이지만 성능이 빠른 서비스를 제공하기 위해 캐시를 사용하는데사용중인 캐시가 바로 Redis이다.이에 따라 Redis 특징과 캐시가 무엇인지에 대해서 간단히 작성해보려고 한다. 캐시란?자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 저장소를 의미Redis?인메모리 DB처럼 모든 데이터를 메모리에 저장하고 조회할 수 있는 캐시 시스템메모리 키 값 데이터 구조를 저장하는 저장소Redis 사용 이유?다양한 장점들이 존재하지만 다양한 자료 구조를 지원다양한 자료 구조를 지원함에 따라 개발 유연성을 제공즉 개발 편리성과 생산성은 올라가며 난이도는 낮아짐DB에 직접 접근하여 저장 및 조회하는 처리 비용(디스크에 직접 ..

[Spring] 정의되지 않은 요청 파라미터에 대한 유효성 검증 및 Jackson 과 @EnableWebMvc의 관계성

회사에서 취약점 개선 개발을 진행하면서 아래의 이슈를 접하게 되었다."정의되지 않은 요청 파라미터에 대해서 유효성 검증 필요" 해당 수정 방안은 ObjectMapper Configuration 설정 방법 혹은 Jackson 설정 방법이 있는데그 중 가장 간단한 방법인 Jackson 설정으로 변경해보려고 한다. 변경 방법1. Application.yml Jackson: deserialization: fail-on.unknown-properties : trueJackSon.deserialization.fail-on.unknown-properties은 Json 역직렬화 시 객체에 정의되지 않은 속성이 들어올 경우UnrecognizedPropertyException 예외를 발생 시키는 설정이다. 2. Appl..

프로그래머스 : 코딩 기초 트레이닝 > 문자열 출력하기 풀이

코테 준비를 안한지 거이 3년정도 되었더니..생각보다 많이 까먹은 내 자신을 발견했음.. 이에 따라 오늘부터 다시 입문자처럼 해보려고 함이에 따라 기초 트레이닝 문제부터 차근차근 풀면서 기초를 잡아나갈 계획! 아무튼 이번 문제는 가장 기초 문제 중 하나입니다.말 그대로 str을 출력하기만 해주면 됩니다. 단, 여기서 놓치면 안되는 부분은 바로 제한사항! 제한 사항에 대해서만 조건을 넣어주면 문제가 쉽게 풀립니다. 코드str = input()if (len(str) >= 1 and len(str) 간단 명료한 코드입니다.말 그대로 1보다 크거나 같으면서 100만보다는 작거나 같은 조건과 공백이 없는 조건을 추가해주면 됩니다.