Backend/Java 45

Spring Boot - 필터링 & 검색 기능

안녕하세요. 오늘은 스프링 부트의 필터링 & 검색기능의 종류에 알아볼게요. 1. 쿼리 메서드(Query Method) Spring Data JPA가 메서드명을 파싱 하여 JPQL을 자동생성하는데 즉 메서드 이름만으로 자동으로 쿼리 생성으로 가장 간단하고 직관적인 방식이에요. 대신 복잡한 조건에는 권장하지 않아요. List findByUsername(String username);List findByAgeGreaterThan(int age);List findByUsernameContaining(String keyword);List findByUsernameAndStatus(String username, String status); 2. JPQL(Java Persistence Query Langua..

Backend/Java 2025.08.22

Spring Boot - Validation

안녕하세요. 오늘은 스프링부트의 중요한 키워드 중 하나인 Validation에 알아볼게요. Validation Validation(검증, 유효화/유효성)의 뜻으로 즉 유효성 검증을 위해 사용하는 스프링부트의 키워드 잘못된 입력값(DIO)에 대한 DB 저장 방지(데이터 무결성)와 사용자의 잘못된 입력을 빠르게 알려줌으로써 UX가 향상돼요. 주요 어노테이션 Validation의 어노테이션은 message 속성을 가지고 있어 검증 실패 시 사용자에게 보여줄 오류 메시지를 직접 지정해 줄 수 있어요. 1) @NotNull - 값이 null이 아니어야 함 - 단, 빈 문자열("")은 허용됨2) @NotEmpty - 값이 null이 아니고 빈 문자열도 아님 - 단, 공백(" ")은 허용..

Backend/Java 2025.08.20

Spring Boot

안녕하세요. 오늘은 스프링 부트에 대해 알아볼게요. 스프링 부트(Spring Boot) 스프링(Spring)을 쉽고 빠르게 사용할 수 있도록 지원하는 프레임 워크 확장판으로 스프링 부트 스타터를 제공을 해줍니다. (빌드 & 의존성 관리 최소화) XML 설정 없이 Java 코드 기반으로 설정이 가능하고(Annotation 기반), 내장 WAS(Tomcat)를 포함하기 때문에 별도 설치 없이 실행이 가능해요. JAR 파일만으로 서버 실행 및 배포가 가능해요. (외부 서버 설치가 불필요) +% 스프링(Spring Framework)이란? % 엔터프라이즈 애플리케이션 개발을 위한 자바 기반의 강력한 프레임워크로 대규모, 복잡한 데이터 관리를 위한 서버 성능, 안정성, 보안 기능을 제공해 줘요. 그러나 초기 ..

Backend/Java 2025.08.17

Java - JDBC

안녕하세요. 이번시간에는 자바 프로그램을 데이터베이스와 연결시켜 주는 JDBC에 대해 알아볼게요. JDBC JDBC Java DataBase Connectivity 자바에서 DB에 접근(연결) 하기 위해 제공되는 표준 API로 MySQL, Oracle, MariaDB 등 다양한 Java에 연동할 수 있어요. JDBC 역할 JDBC는 데이터베이스와 '연결, 질의, 결과, 종료'를 담당해요. DB에 접속하고, SQL문을 작성 후 전송, SQL 결과를 Java의 객체 형태로 받을 수 있답니다. JDBC의 필요성 Java에서는 SQL문장을 직접 실행할 수 없어요. DB드라이버와 JDBC API를 통해 DB와 연결로 Java에 표준화된 SQL을 사용하여 DBMS의 유연성(유지보수, 효율정)을 확보할 수..

Backend/Java 2025.08.13

스트림(Stream) API

안녕하세요 오늘은 스트림에 대해 알아볼게요! 스트림이란? 스트림(Stream, 흐름)은 자바 8부터 도입된 기능으로, 컬렉션 또는 배열에 저장된 데이터를 선언형(직관, 간결) 방식으로 처리할 수 있게 지원하는 도구예요. 스트림을 사용하면 데이터 필터링, 매핑(변환), 집계 등 다양한 작업을 수행할 수 있고, 람다식과 결합하여 가독성이 높은 코드로 작성이 가능해집니다. 다음 스트림의 3단계 구조를 알아볼까요? 스트림의 3단계 구조 (데이터 파이프라인) 스트임은 데이터를 소스로부터 연속적으로 처리하는 '파이프 라인'을 구축을 하는데 여기서 '파이프 라인'은? 데이터를 사용하는 단계, 절차, 흐름을 뜻해요. 1. 스트림의 생성 - 소스 (Source) 소스는 스트림의 시작점 (생성 단계)로 컬렉..

Backend/Java 2025.07.29

람다식(Lambda Expression)

안녕하세요. 오늘은 람다식 (Lamnda Expression)에 대해 알아볼게요. 람다식 람다(표현)식은 자바 8부터 도입이 저작된 함수형 인터페이스예요. 함수를 하나의 식으로 간결하게 표현하고, 익명 클래스를 대쳐 해 코드의 가독성을 향상하는 특징을 가지고 있어요. ?!) 함수형 인터페이스란? 추상메서드가 단 하나만 존재하는 인터페이스로 인터페이스에 @FunctionalInterface 어노테이션으로 선언이 가능해요. 디폴트 메서드, static 메서드는 여러 개 존재가 가능합니다. 1. 람다식 기본 형태cf) 메서드 기본 형태[접근제어자] 반환타입 메서드명(매개변수...) { 구현부 }== 람다식 ==: 추상 메서드를 간결하게 구현하는 것이 목표+) 인터페이스의 추상 메서드 public ab..

Backend/Java 2025.07.28

내부 클래스 (Inner Class)

안녕하세요 오늘은 내부 클래스 (Inner Class)에 알아볼게요. 내부 클래스 내부 클래스는 중첩 클래스라고도 불리는데 즉, 다른 클래스 내부에 정의된 클래스를 말해요. 내부 클래스의 사용함으로 코드의 구조 파익이 용이하고,(코드 가독성 향상) 외부에 공대할 필요가 없는 클래스는 내부로 감출 수 있어요.(캡슐화 강화) 그리고 내부 클래스는 외부 클래스와 필드와 메서드에 직접 접근이 가능해요.(외부 클래스 멤버 접근) 내부클래스는의 종류는 비정적 내부 클래스, 정적 내부클래스, 메서드 내부 클래스, 익명(내부) 클래스 총 네 가지가 있어요. 그럼 내부 클래스의 종류에 대해 간단히 알아볼까요? 비정적 내부 클래스(인스턴스)(Non-static Inner Class) 비정적 내부 클래스는 ..

Backend/Java 2025.07.27

프레임워크(Framework)

안녕하세요. 오늘은 프레임워크에 대해서 알아볼까 해요. 프레임워크(Framework) 프레임워크는 영단어로 간다 하게 설명드리면 프레임(frame - 틀) + 워크(work - 일하다)를 합친 말로 제공받는 일정한 요소와 틀, 규약을 가지고 무언가를 만드는 일이에요. 그럼 프레임워크의 특성과 종류를 알아볼까요? 컬렉션(Collection) 컬렉션은 객체들을 모아놓은 것(데이터 그룹)을 다루기 위한 자바 CF의 최상위 인터페이스예요. 컬렉션 인터페이스는 여러 메서드를 정의하는데요.컬렉션 인터페이스의 메서드컬렉션 인터페이스의 특징.add(E e)요소 추가.remove(Object o)요소 제거.clear()전체 비우기.contains(Object o)포함 여부 확인.isEmpty비어 있는지 확인..

Backend/Java 2025.07.26

빌더(Builder)

안녕하세요 오늘은 필드가 많아서 복합한 객체를 쉽게 볼 수가 있는 빌더에 알아볼게요! 빌더(Builder) 빌더는 소프트웨어 설계 패턴 중 하나로 복잡한 객체를 단계별로 만들 때 주로 사용해요. 즉 필드(속성)가 많거나, 필드에 필수값과 선택값이 섞여있을 때 매우 유용하답니다. 빌더를 피자 주문으로 비유하자면 피자의 토핑(도우, 치즈, 도핑 재료)을 입맛에 맞는 주문을 받아서 나만의 피자를 만드는 과정과 같은 느낌이랍니다. 그럼 빌드의 사용목적과 장단점들을 한번 간단하게 알아볼까요? 빌더의 사용목적 빌더는 위에 소개를 한 것과 추가로 생성자가 너무 많아질 때(오버로딩), 코드가 복잡하고 읽기가 너무 어려울 때 주로 사용해요. 빌더 사용으로 가독성과 유지보수성이 좋아지고 선택적인 매개변수를 쉽게..

Backend/Java 2025.07.25

싱글톤 (Singleton)

안녕하세요. 이번시간에는 싱글톤(Singleton)에 대해 간단하게 알아볼까 해요. 싱글톤(Singleton) 소프트웨어 설계 패턴 중 하나로, 클래스의 인스턴스가 '하나만' 생성되고 재 사용하고 싶을 때 씁니다. 그리고 인스턴스 하나로 전역적인 접근이 가능하도록 하는 패턴입니다. 싱글톤은 주로 설정 정보 관리 객체, 공유 자원 관리 객체, 로그 객체 등에 주로 사용되는 친구예요. public class Singleton { // 1. 자신의 인스턴스를 static으로 선언 (오직 하나) private static Singleton instance; // 2. 생성자를 private으로 선언 (외부에서 생성 못함) private Singleton() {} // 3. 인스턴스..

Backend/Java 2025.07.24