Backend/JAVA 23

Stream API란? (for-loop와 비교)

📌 1. Stream API란?Stream API는 Java 8에서 도입된 기능으로, 컬렉션(List, Set 등)이나 배열의 데이터를 함수형 스타일로 처리할 수 있는 API. 간결하고 직관적인 코드를 작성할 수 있으며, 반복문보다 가독성이 좋고 병렬 처리도 지원한다. 📌 2. Stream의 특징원본 데이터를 변경하지 않음 (불변성 유지)중간 연산(Intermediate)과 최종 연산(Terminal)으로 나뉨병렬 처리(parallelStream()) 가능 📌 3. Stream API 기본 동작 흐름Stream API는 "데이터 생성 → 중간 연산 → 최종 연산" 의 구조로 작동해!Stream 생성 → 중간 연산(필터링, 변환 등) → 최종 연산(리스트로 변환, 출력 등) 📖 예제: 숫자 리스..

Backend/JAVA 2025.08.09

JPA vs MyBatis

JPA와 MyBatis는 Java 애플리케이션에서 데이터베이스와 통신하기 위한 대표적인 persistence 프레임워크로, 각각 자동화된 ORM 방식(JPA)과 SQL 중심의 매퍼 방식(MyBatis)을 제공한다. 🔥 JPA vs MyBatis 비교✔ JPA는 객체 중심 설계와 생산성 강화에 좋음✔ MyBatis는 SQL 최적화와 복잡한 쿼리에 강점✔ 대부분의 프로젝트는 JPA + QueryDSL을 기본으로 사용하면서, 성능이 중요한 부분만 MyBatis로 처리!비교 항목🏆 JPA (Hibernate, Spring Data JPA)🔥 MyBatis개발 생산성✅자동 매핑, CRUD 자동 생성 → 생산성 높음❌SQL 직접 작성 필요 → 생산성 낮음SQL 최적화❌복잡한 쿼리는 어렵고 성능 튜닝 필요 ✅S..

Backend/JAVA 2025.04.10

[JAVA] 데이터 타입 Primitive Type vs Wrapped Type

📌 1. 자바의 데이터 타입 분류Wrapped Type을 알기 전에 Reference Type에 대해 먼저 알아보자.자바에서 데이터 타입은 크게 두 가지로 나뉜다! 1️⃣ 기본형(Primitive Type) → 값 자체를 저장2️⃣ 참조형(Reference Type) → 객체를 가리키는 참조값을 저장 ✅ 1. 기본형 (Primitive Type)boolean, char, byte, short, int, long, float, double객체가 아니며, 메모리에서 직접 값을 저장연산 속도가 빠르고 메모리 사용이 효율적✅ 2. 참조형 (Reference Type)배열(int[]), 클래스(String, Integer, Double 등), 인터페이스, 열거형(Enum)객체의 주소(참조값)를 저장메서드를 사용..

Backend/JAVA 2025.02.26

static 키워드

📌 1. static 키워드의 의미static은 "정적인"이라는 의미로,  static을 붙이면 객체(instance)와 관계없이 클래스(class) 단위로 관리된다는 뜻이다! 즉, 클래스가 메모리에 로드될 때 한 번만 생성되며, 모든 객체가 공유한다. ✅ 2. static 키워드의 사용1️⃣ static 변수 (클래스 변수)모든 객체가 공유하는 변수! (인스턴스와 관계 없음)클래스명.변수명으로 접근 가능객체를 생성하지 않아도 사용 가능📖 예제class Counter { static int count = 0; // 모든 객체가 공유하는 변수 Counter() { count++; // 생성될 때마다 count 증가 }}public class Main { public s..

Backend/JAVA 2025.02.26

JNDI란?

🔍 JNDI란? (Java Naming and Directory Interface) Java EE에서 사용되는 네이밍 서비스로, 리소스 (DataSource, JMS 등)를 애플리케이션에서 쉽게 찾고 사용할 수 있도록 도와줌.✅ 1. 기본 개념DataSource데이터베이스 연결을 관리하는 객체로, 직접 DriverManager.getConnection()을 사용하는 대신 JNDI를 통해 제공됨.Connection pool을 어플리케이션단에서 어떻게 관리할지를 구현하는 인터페이스  ⭐DriverManager.getConnection():실제 자바 프로그램과 데이터베이스를 네트워크상에서 연결해주는 메소드이다. Connection: 네트워크 상의 연결 자체를 의미 Connection Pool (커넥션 풀):..

Backend/JAVA 2025.02.26

자바(Spring) 기본 예외 처리

📌1.  try-catch 문과 throws Exception 사용법기본적인 예외 처리는 다음 두 가지 방법으로 구현할 수 있다.✅ 1-1. try-catch 문try-catch 문은 코드 실행 중 발생하는 예외를 감지하고 처리하는 가장 일반적인 방식이다.로직을 중단하지 않고 즉각적인 예외 처리.Spring MVC에서 주로 Controller 📖 try-catch 예시try { int result = 10 / 0; // 예외 발생 (ArithmeticException)} catch (ArithmeticException e) { System.out.println("예외 발생: " + e.getMessage()); // 예외 메시지 출력 e.printStackTrace(); // 스택 ..

Backend/JAVA 2025.02.23

[Java] 비동기 작업 처리 (ExecutorService VS CompletableFuture)

📌 Java에서 비동기 작업 처리Java에서 비동기 작업을 처리하는 방법은 다양하지만, ExecutorService와 CompletableFuture가 가장 일반적이고 널리 사용된다.😆 ✅ 1. Thread 직접 사용Thread 클래스를 직접 생성하여 작업을 실행하는 방법. 📖 예제Thread thread = new Thread(() -> { System.out.println("비동기 작업 실행");});thread.start(); ✔ 장점간단한 작업에 적합. ❌ 단점스레드 풀 관리가 불가능하고, 직접 관리해야 해서 복잡해짐.성능 및 자원 관리 측면에서 비효율적. ✅ 2. ExecutorService스레드 풀을 관리하며 효율적으로 비동기 작업을 처리.Runnable 또는 Callable을 활용..

Backend/JAVA 2025.02.23

HttpURLConnection

HttpURLConnection은 자바에서 HTTP 프로토콜을 사용하여 서버와 통신할 때 사용되는 클래스로 Java의 표준 라이브러리인 java.net 패키지에 포함되어 있습니다.URL을 통해 서버와 연결하고 데이터를 송수신하는 데 사용됩니다. 주요 기능서버와의 연결 설정: URL을 사용하여 서버에 연결하고, HTTP 요청 방법(GET, POST 등) 및 다양한 속성을 설정할 수 있습니다.데이터 송수신: 서버와의 연결을 통해 데이터를 송수신할 수 있습니다. 응답 처리: 서버로부터 받은 응답 데이터를 처리하고 응답 코드, 응답 헤더, 응답 본문 등을 확인할 수 있습니다.연결 관리: 연결을 열고 닫는 등의 연결 관리 작업을 수행할 수 있습니다. 사용 예제아래는 간단한 HttpURLConnection을 사용..

Backend/JAVA 2024.06.07

블록킹큐(Blocking Queue)

🔍 1. Queue란?Queue는 컬렉션 프레임워크의 일부로, 데이터를 선입선출(FIFO, First-In-First-Out) 방식으로 저장하고 관리하는 자료구조. 🔍 2. BlockingQueue란?Queue를 상속 받아, 큐의 기본작업에 블로킹 연이 추가된 인터페이스.동기화된 방식으로 작동하여 여러 스레드가 안전하게 접근할 수 있다. BlockingQueue는 큐가 비어 있을 때 요소를 가져오려고 하면 대기하고, 큐가 가득 차 있을 때 요소를 추가하려고 하면 대기한다. (put, take 함수에서 블락됐을 때 다음 코드가 실행되지 않고 대기하는 걸 볼 수 있다!!) *블로킹 연산특정 조건이 충족될 때까지 스레드를 일시 중지시키는 연산으로, 연산이 완료될 때까지 스레드를 대기 상태로 만든다. ..

Backend/JAVA 2024.06.05

Callable, Runnable, Future

Runnable과 Callable은 둘 다 자바에서 멀티스레딩을 구현할 때 사용되는 인터페이스입니다.두 인터페이스는 스레드가 수행할 작업을 정의하며, ExecutorService와 같은 스레드 풀에서 관리되고 실행될 수 있습니다.RunnableRunnable 인터페이스는 자바에서 멀티스레딩을 구현하기 위한 기본 인터페이스입니다.run 메서드를 하나만 가지고 있으며, 예외 처리와 반환값이 없습니다. (Future.get()을 호출하면 null을 반환)간단한 비동기 작업을 수행할 때 유용합니다. (ex. UI 스레드에서 백그라운드 작업을 수행, 타이머 작업)메서드: void run()public class MyRunnable implements Runnable { @Override public v..

Backend/JAVA 2024.06.05