java 18

자바(JAVA)의 Default Interface란?

Java 8부터 인터페이스에 default 메서드를 정의할 수 있는 기능이 추가되었습니다. 기존에는 인터페이스가 오직 메서드의 시그니처만 정의하고, 실제 구현은 해당 인터페이스를 구현하는 클래스에서 제공해야 했습니다. 그러나 default 메서드를 사용하면 인터페이스에서도 기본적인 메서드를 구현할 수 있습니다.1. Default 메서드란?default 메서드는 인터페이스에서 메서드의 기본 구현을 제공하는 기능입니다. default 키워드를 사용하여 선언하며, 이를 구현하는 클래스는 해당 메서드를 별도로 재정의하지 않아도 사용할 수 있습니다.기본 문법interface MyInterface { default void sayHello() { System.out.println("Hello fr..

Back_End/Java 2025.02.28

자바(JAVA) DAO, DTO, VO 란?

1. DAO, DTO, VO란?1.1 DAO (Data Access Object)DAO는 데이터베이스와 직접적으로 상호작용하는 객체로, 데이터베이스의 CRUD(Create, Read, Update, Delete) 작업을 수행합니다. DAO는 주로 SQL 쿼리를 실행하고 결과를 반환하는 역할을 합니다.특징:데이터베이스와 직접적인 연결을 담당SQL을 실행하여 데이터를 조회하거나 저장서비스 레이어에서 호출되어 데이터를 주고받음일반적으로 인터페이스와 구현 클래스로 분리하여 사용DAO 예제 (Spring Boot + MyBatis)@Mapperpublic interface UserDAO { @Select("SELECT * FROM users WHERE id = #{id}") UserVO getUserB..

Back_End/Java 2025.02.26

자바(JAVA) Synchronized

Java에서 synchronized 키워드는 멀티스레드 환경에서 데이터를 안전하게 공유하고 동기화하기 위해 사용됩니다. 여러 스레드가 동시에 접근할 수 있는 자원(주로 변수나 메서드)에 대한 동시 접근을 제어하여, 데이터 불일치나 경쟁 상태(race condition)를 방지하는 역할을 합니다. Synchronized 키워드의 사용 위치(1) 메서드 선언부에 사용메서드 선언부에 synchronized를 붙이면, 해당 메서드를 호출하는 스레드가 그 메서드를 실행할 때 동기화를 보장합니다.인스턴스 메서드에서 사용: 해당 메서드가 호출될 때마다 인스턴스(객체)에 대한 락이 걸립니다. 여러 스레드가 같은 객체의 메서드를 호출할 때, 하나의 스레드만 메서드를 실행할 수 있도록 보장합니다.클래스 메서드에서 사용: ..

Back_End/Java 2025.02.24

자바(Java) Optional 이란?

Optional은 Java 8에서 도입된 클래스(java.util.Optional)로, null을 직접 다루는 대신 안전하게 값을 처리할 수 있도록 도와주는 컨테이너 클래스입니다. Optional을 사용하면 NullPointerException(NPE) 발생 가능성을 줄이고, 코드의 가독성을 높일 수 있습니다.2. Optional의 주요 메서드 및 사용 예제2.1 Optional 객체 생성하기import java.util.Optional;public class OptionalExample { public static void main(String[] args) { // 값이 존재하는 Optional 생성 Optional optionalValue = Optional.of("H..

Back_End/Java 2025.02.14

Java의 Comparator vs Comparable

Java에서 객체를 정렬할 때 사용하는 두 가지 인터페이스가 있습니다: Comparable과 Comparator입니다. 이 두 인터페이스는 컬렉션 내 객체를 정렬할 때 중요한 역할을 하며, 각각의 특징과 사용법이 다릅니다. 이번 글에서는 Comparable과 Comparator의 차이점을 설명하고, 예제와 함께 실무에서 어떻게 활용할 수 있는지 알아보겠습니다.1. Comparable 인터페이스란?Comparable 인터페이스는 클래스 자체에 정렬 기준을 정의할 때 사용합니다. 즉, 객체가 자신과 다른 객체를 비교할 수 있도록 합니다.Comparable 인터페이스의 특징java.lang.Comparable 인터페이스를 구현해야 합니다.compareTo(T o) 메서드를 오버라이딩하여 정렬 기준을 정의합니다..

Back_End/Java 2025.02.14

자바(Java) 스트림(Stream) 이란?

1. Stream이란?Java Stream은 컬렉션 데이터를 함수형 스타일로 처리할 수 있도록 도와주는 API이다. 기존의 반복문을 사용한 컬렉션 처리보다 간결하고 가독성이 높으며, 병렬 처리도 용이하다.특징선언형 스타일: 코드가 간결하고 가독성이 좋다.중간 연산과 최종 연산: 연산을 구분하여 체이닝 가능내부 반복 처리: for 문 없이 요소를 처리병렬 처리 가능: parallelStream() 사용 시 병렬 실행 지원2. Stream 생성 방법Stream을 생성하는 방법은 여러 가지가 있으며, 주로 컬렉션이나 배열을 기반으로 생성한다.2.1 컬렉션에서 생성List list = List.of("Apple", "Banana", "Cherry");Stream stream = list.stream();2.2 ..

Back_End/Java 2025.02.13

자바(Java)에서 스레드를 구현하는 방법

Java에서 스레드를 구현하는 방법은 여러 가지가 있으며, 대표적으로 다음과 같은 방식이 있습니다.Thread 클래스를 상속받아 구현Runnable 인터페이스를 구현Callable과 Future를 활용ExecutorService를 이용한 스레드 풀(Thread Pool) 활용 1. Thread 클래스를 상속받아 구현Thread 클래스를 직접 상속하여 run() 메서드를 오버라이딩하는 방식입니다.class MyThread extends Thread { @Override public void run() { for (int i = 0; i 특징Thread 클래스를 상속받으면 다른 클래스를 상속받을 수 없음 (단일 상속 문제)단순한 구현이 필요할 때 적합2. Runnable 인터페이스를 ..

Back_End/Java 2025.02.03

RuntimeException과 Exception의 차이점

Java에서 예외 처리(Exception Handling)는 안정적인 프로그램 작성을 위한 중요한 요소입니다. 예외는 크게 Checked Exception과 Unchecked Exception으로 나뉩니다. 이 중 RuntimeException과 Exception은 가장 자주 등장하는 개념으로, 둘의 차이를 알아보겠습니다.1. ExceptionException은 java.lang.Exception 클래스에서 파생된 예외입니다. 일반적으로 Checked Exception에 해당하며, 컴파일 시점에 반드시 처리해야 합니다. 즉, 예외가 발생할 가능성이 있는 코드를 작성할 때 반드시 try-catch 블록이나 throws 키워드를 사용하여 처리해야 합니다. 특징Checked Exception은 컴파일러가 예외..

Back_End/Java 2025.01.15

자바(JAVA) 컴파일 과정

자바(Java)는 플랫폼 독립성을 가지는 언어로, "Write Once, Run Anywhere"라는 철학 아래 설계되었습니다. 이를 가능하게 하기 위해 자바는 소스 코드를 중간 형태인 바이트코드(Bytecode)로 변환하고, 이 바이트코드를 JVM(Java Virtual Machine)이 실행하는 구조를 따릅니다. 자바 컴파일 과정을 설명하겠습니다.1. 자바 컴파일 과정자바 컴파일 과정은 크게 세 단계로 이루어집니다:소스 코드 작성(Source Code Writing)개발자가 .java 확장자를 가진 파일에 자바 소스 코드를 작성합니다.컴파일(Compilation)javac 컴파일러를 통해 자바 소스 코드가 바이트코드로 변환됩니다.결과물은 .class 파일로 저장됩니다.실행(Execution)JVM이 ..

Back_End/Java 2025.01.10