JDBC란
·
Java
JDBC(Java DataBase Connectivity)는 자바 프로그램이 데이터베이스와 연결하고 작업을 진행하기 위한 자바 표준 API로 응용프로그램과 데이터베이스 사이의 연결을 관리하고 쿼리를 실행하며 결과를 처리할 수 있도록 표준 인터페이스를 제공한다 장점데이터베이스 독립성JDBC API를 사용하면 데이터베이스의 종류에 상관없이 동일한 방식으로 데이터베이스 작업을 수행할 수 있다이식성JDBC를 사용하는 자바 애플리케이션은 다양한 플랫폼에서 실행될 수 있다표준화JDBC는 자바 표준 API로 일관된 인터페이스를 제공한다 자바 진영에서 추상화된 Driver 인터페이스를 제공함으로 다양한 DB 환경에서 접근을 용이하게 만든다Driver를 관리하는 DriverManager는 각 DB사가 구현한 JDBC D..
record
·
Java
record란2020년 초에 Java 14 버전에서 프리뷰 기능으로 제공되어Java 16 버전에서 정식 스펙으로 채택된 새로운 클래스 타입이다 데이터 중심의 클래스를 정의하기 위한 간결한 방법으로 주요 특징은 다음과 같다 간결한 데이터 클래스 정의자동으로 메서드 생성 (toString(), equals(), hashCode(), getter)불변성 보장생성자 및 검증 로직 추가 가능추가 메서드 정의 가능record는 DTO, 불변 데이터 모델, 값 객체 등을 만들 때 유용하게 사용할 수 있다 예제 코드를 살펴보자 // 소괄호 안에 필드 변수를 정의하며 자동으로 private final로 선언public record Student( String name, int age, String maj..
직렬화(Serialization)
·
Java
각자 PC OS마다 서로 다른 가상 메모리 주소 공간을 갖기 때문에 참조형 데이터들은 인스턴스를 직접 전달할 수 없다참조형 데이터를 외부로 전달하기 위해서는 직렬화 과정을 거쳐야한다 직렬화란? 자바 직렬화(Serialization)는 객체 인스턴스의 데이터를 I/O 스트림에 적합한 일련의 데이터로 변환하는 과정이다구체적으로, 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터를 변환하는 기술이다 이 과정을 통해 객체를 파일로 저장하거나, 네트워크를 통해 전송하거나, 다른 컴퓨터 환경에서 객체를 재구성할 수 있다직렬화된 데이터는 나중에 역직렬화(Deserialization) 과정을 통해 다시 객체로 변환할 수 있다 자바에서 직렬화를 ..
고유 락 (Intrinsic Lock)
·
Java
자바의 모든 객체는 락(lock)을 갖고 있다모든 객체가 갖고 있으므로 고유 락(intrinsic lock)이라고 하며, 모니터처럼 동작한다고 하여 모니터 락(monitor lock), 혹은 그냥 모니터(monitor)라고 한다 예제를 통해 고유 락을 다루는 synchronized를 확인해보자 고유 락 예제import java.time.LocalDateTime;import java.util.concurrent.TimeUnit;public class IntrinsicLock { public static void main(String[] args) { IntrinsicLock intrinsicLock = new IntrinsicLock(); Thread thread1 = new..
Java에서의 Thread
·
Java
쓰레드는 하나의 프로세스 내에서 독립적으로 실행되는 작업 단위로프로그램 실행의 가장 작은 단위로 볼 수 있으며 이는 동시성 프로그래밍의 핵심 요소이다 일반적인 자바 애플리케이션은 하나의 메인 쓰레드로 시작하지만, 여러 작업을 동시에 처리하기 위해서는 추가적인 쓰레드가 필요하다 스레드 1. Thread 클래스 상속public class MyThread extends Thread{ @Override public void run(){ // 작업 내용 }}Thread 클래스를 상속받고 run 메서드를 재정의하여 구현한다 구현 예제public class MyThread extends Thread{ @Override public void run(){ for (in..
JVM stack & heap
·
Java
JVM 탄생 이전C/C++ 는 컴파일 플랫폼과 타겟 플랫폼이 다를 경우 프로그램이 동작하지 않는다. 플랫폼 = 운영체제 + CPU 아키텍처  문제 발생 원인하드웨어 아키텍처 차이서로 다른 CPU 아키텍처는 명령어 집합이 다르기 때문에 x86 아키텍처에서 컴파일된 프로그램은 ARM 기반의 프로세서에서 실행할 수 없음CPU는 각 아키텍처에 맞는 어셈블리 명령어를 해석하기에, 서로 다른 아키텍처 간에는 명령어 해석이 달라질 수 밖에 없음운영체제 차이운영체제마다 시스템 호출 방식, 메무리 구조 등이 다를 수 있음 이러한 문제를 해결하기 위한 과정을 cross compile이라 한다. C/C++은 cross compiler를 통해 타겟 플랫폼을 정의하고 이에 맞춰서 컴파일을 진행하는 방식으로 문제를 해결했음 e...