본문 바로가기
728x90

Java18

Jackson 라이브러리의 직렬화/역직렬화 api 개발을 하다보면 자바 객체를 json으로 직렬화 하고 json으로 들어온 요청을 자바 객체로 역직렬화 하는 일이 빈번하게 일어난다. 서버에서 데이터를 처리해 Dto에 담아 클라이언트로 응답하면 내부적으로 Jackson의 ObjectMapper를 이용하여 자바 객체를 json으로 직렬화 하는데, 자바 객체에는 없던 필드가 요청에 담겨 리턴되는 경우가 생길 수 있다. 이번 포스트에서는 이러한 현상의 원인을 제공하는 Jackson 라이브러리의 직렬화/역직렬화에 대해 정리한다. 예시 public class User { public String name; public Integer age; public User(String name, Integer age) { this.name = name; this.ag.. 2022. 9. 21.
제네릭을 이용한 마이바티스 쿼리 유틸 만들어보기 개요 최근 예외 처리가 중요한 발송 관련 부분을 개발하고있다(발송 외에 다른 모든 도메인에서도 예외 처리가 중요하긴 하다). 실수를 줄이기 위해 다른 서비스의 발송 코드도 많이 참고하고 있는데, 코드 중간중간 DB 처리가 의도한 대로 처리되지 않을 경우 exception을 던져 처리하는 부분이 눈에 많이 보였다. 위 사진에서는 예외 처리를 하기 위해 modify, insert 등의 쿼리 결과를 result 변수에 받고 해당 값을 그때그때 비교하여 예외를 던진다. 예외 처리를 위해 꼭 필요한 부분이지만 그것을 위해 매번 변수에 쿼리 결과를 할당하고 비교문이 들어가는것이 코드 이해를 어렵게 하는것 같아서 관련 유틸을 만들어보았다. 걸림돌 아래는 쿼리를 수행하고, 그 쿼리의 결과를 확인한 후 예외 상황이라면 .. 2022. 9. 13.
GC 개념 및 동작 원리 지난 글에서 JVM의 구조에 대해 정리해 보았는데 JVM의 구성 요소중 GC에 대해서는 자세한 설명이 빠져있었다. GC만 정리하더라도 글 한 개의 분량이 될 것 같아서 이번 글에 이어서 GC에 대해 정리해본다. Garbage Collection 이란 학부생 때 C언어를 이용한 과제를 진행했을 때 malloc() 함수 사용 후 free() 함수를 실행해서 메모리를 해제해준 기억이 있다. 그 다음 학기에 자바 강의를 수강했는데 자바에서는 별도로 메모리를 관리하지 않아도 되고, GC가 알아서 메모리를 관리해준다고 배웠던 기억이 남아있다. 지난 JVM 정리에서 알 수 있듯이 자바를 이용해 개발할 때는 직접 메모리 공간을 할당/반환을 하지 않고, JVM을 통해 할당받고, 반환하게 된다. 이렇게 자바에서는 JVM의.. 2022. 9. 13.
JVM 이란? 들어가며 최근 자바 AOP에 관심이 생겨 수강했던 백기선의 더 자바 - 바이트코드 조작의 마법 강의 내용 중 바이트코드를 설명하기 전, JVM과 그것과 관련된 것들에 대한 내용을 접하게 되었다. 입사 후 자바를 사용한지 2년 가까이 되었지만 JVM과 관련된 지식은 학부생때 잠깐 배웠던 지식이 전부라 관련 내용을 정리해보고 싶어서 간단하게 정리하였다. 자바와 JVM, JRE, JDK 학부생 시절에 자바 수업을 위해 인터넷에서 자바를 다운로드받은적이 있다. 당시 다운로드할 때 jre, jdk 등 차이를 알수없는 요소들이 있던것으로 기억한다. JVM 구조에 대해 정리하기 전, 자바와 JVM, JRE, JDK가 어떻게 다른지 정리하려고 한다. 이 챕터를 읽고 나면 자바를 다운로드했다 라는 말에서 어색함을 느낄 .. 2022. 8. 23.