[Docker/Java] Java 기반 Docker 이미지에서 SQLite 관련 취약점 제거 방법 (CVE-2025-6965)
·
개발 (Development)/Docker
문제 상황adoptopenjdk/openjdk11:jre 이미지를 기반으로 자바 애플리케이션 Docker 이미지를 빌드하던 중, 보안 스캐너에서 CRITICAL 등급의 SQLite 관련 취약점(CVE)이 지속적으로 발견되었습니다.보안 점검 도구(Trivy 등)로 스캔한 결과, libsqlite3-0 라이브러리에서 발생하는 취약점이 주기적으로 보고되었고, 빌드 파이프라인이 이를 이유로 차단되는 상황이었습니다.원인 분석adoptopenjdk/openjdk11:jre는 Debian/Ubuntu 계열 기반으로 제작되어 있으며, 기본적으로 sqlite3와 libsqlite3-0 패키지를 포함하고 있습니다.문제는 다음과 같습니다.해당 이미지는 최신 보안 패치 적용 주기가 느립니다.저희 애플리케이션에서는 SQLite..
[Java] Interface란? 클래스와 다른 점은?
·
개발 (Development)/Java
Java를 공부하다 보면 interface라는 개념이 등장합니다. 처음에는 추상 클래스와 비슷하게 느껴질 수 있지만, 인터페이스는 Java에서 매우 중요한 설계 도구입니다. 이번 글에서는 interface의 정의부터 사용 예시, 특징까지 정리해 보겠습니다.1. 인터페이스란 무엇인가요?Java에서 interface는 클래스가 구현해야 할 메서드의 목록을 명세한 일종의 규격서입니다. 실제 동작(구현)은 포함하지 않고, 메서드 이름과 매개변수 등 구조만 정의합니다. 클래스가 이 인터페이스를 implements로 구현하면, 반드시 해당 메서드들을 정의해야 합니다.public interface Animal { void sound();}Animal 인터페이스를 구현하는 클래스는 sound() 메서드를 반드시 ..
[Java] MyBatis와 JPA 속도 비교: 어떤 상황에 어떤 선택이 더 나을까?
·
개발 (Development)/Java
Java 백엔드 개발에서 가장 많이 사용되는 ORM 프레임워크인 JPA와, SQL 매핑 프레임워크인 MyBatis는 각기 다른 장점을 지니고 있습니다. 저 역시 프로젝트를 진행하면서 "어떤 상황에 어떤 것이 더 빠를까?"라는 질문을 갖고 두 프레임워크를 비교해 보게 되었습니다.이번 글에서는 MyBatis와 JPA의 속도와 성능 측면에서의 차이를 중심으로, 실제 사용 시 고려할 점들을 정리해보았습니다.1. MyBatis와 JPA는 어떤 프레임워크인가요?MyBatis는 SQL을 직접 작성하여 사용하는 SQL 매퍼 프레임워크입니다. 개발자가 SQL을 전적으로 통제할 수 있어 성능 최적화에 유리합니다.JPA는 객체지향 프로그래밍과 데이터베이스를 매핑하는 ORM 프레임워크입니다. SQL 작성을 최소화하고 생산성을..
[Java] PostgreSQL의 timestamptz를 Java MyBatis에서 Instant로 받는 방법
·
개발 (Development)/Java
PostgreSQL에서 timestamptz는 시간대(time zone) 정보를 포함한 타임스탬프를 의미합니다. 이를 Java에서 MyBatis를 통해 받아올 때, 어떤 자료형을 사용해야 할지 고민이 생길 수 있습니다.이번 글에서는 Instant로 매핑하는 방법을 중심으로 정리하였습니다.1. timestamptz란?timestamp with time zone의 약자로, UTC 기준으로 저장되며 클라이언트의 타임존에 맞춰 자동으로 변환되는 타입입니다.예를 들어 다음과 같이 저장된 값이 있다면:2025-07-28 15:00:00+00한국 시간대(KST)에서는 2025-07-28 24:00:00으로 변환되어 표시됩니다.2. Java에서 매핑 가능한 자료형PostgreSQL의 timestamptz는 Java에서..
[Java] ISO 8601 형식의 시간 출력하기 (현재 시간과 과거 시간 구하기)
·
개발 (Development)/Java
Java를 사용하여 현재 시간과 과거 시간을 ISO 8601 형식(예: 2025-07-13T15:00:00Z)으로 출력하는 방법에 대해 정리해보았습니다. 특히, UTC 기준으로 현재 시간과 3시간 전 시간을 구하는 예제를 중심으로 설명드리겠습니다.1. 문제 상황로그나 데이터 처리, 외부 API와의 연동 시 국제 표준 시간 형식인 ISO 8601을 사용하는 경우가 많습니다.예를 들어, 2025-07-13T15:00:00Z와 같은 형식은 UTC(협정 세계시)를 기준으로 한 ISO 포맷입니다.이 글에서는 현재 시간과 현재로부터 3시간 전 시간을 자바 코드로 계산하고, 이를 ISO 8601 형식으로 출력하는 방법을 알아봅니다.2. 해결 방법사용 도구java.time.Instantjava.time.temporal..