JAVA 39

DTO, VO, DAO, Entity

데이터를 목적에 따라 정의하는 구조체DTO( 데이터를 전달하기 위한 객체 ), VO( 값 자체를 포현하는 객체 ), DAO( Database에 접근하는 역할을 하는 객체), Entity (실제 DB 테이블과 매핑되는 클래스 )에 대해 알아볼 예정이다. DTO( Data Transfer Object)계층 간 데이터 교환을 위해 사용하는 객체로직을 가지지 않은 순수한 데이터 객체(Getter/Setter)만을 가짐주로 DB에서 데이터를 갖고오거나 통신(FrontEnd)에서 요청하거나 응답할 때 데이터를 담아 전달할 때 사용한다.class UserSignInRequestDto{ private String userId; private String password;} VO(Value Object)값 자..

JAVA 2025.03.24

ENUM (열거형) 자료형

열거형 자료형이란?서로 관련된 상수들의 집합을 표현하는데 사용한다서로 유기적인 관계성을 가지며 자바의 클래스로 취급한다.메서드는 존재하지 않는다. (단지 열거된 자료일 뿐)클래스의 static final 필드처럼 쓰인다 : 각 상수는 정의된 Enum 타입으로 간주한다.cf) static final 필드 처럼 사용되기 때문에 모든 요소를 대문자로 써주는 것이 권장된다. 1. ENUM 선언 방법 - enum 키워드 사용enum Enum명 {}다음과 같이 선언하며 명명규칙은 클래스와 동일하다중괄호 내에서 열거할 데이터를 ,로 구분하여 나열한다.enum Fruits{ Apple, Banana, Orange}Fruits apple = Fruits.Apple;System.out.println(apple); 2..

JAVA 2025.03.23

Wrapper Class

Wrapper Class : 기본 데이터 타입을 객체로 다루기 위해 사용한다. >>기본 데이터 타입이란?byte, short, int, long, float, double, char, boolean, void(메서드 반환)>>각 데이터 타입에 해당하는 Wrapper class 가 존재한다. -java.lang package에 정의된다 : 컬렉션 프레임워크에서는 내부에 객체만을 저장한다>>기본 데이터 타입의 저장을 Wrapper 클래스로 변환하여 저장 Byte, Short, Int, Long, Float, Double, Char, Boolean, Void 박싱(Boxing) vs 언박싱(Unboxing)기본 타입과 해당 타입의 Wrapper Class 간의 자동변환자바 컴파일러가 자동으로 처리한다. 1) ..

JAVA 2025.03.22

Stream API

Stream API란?(컬렉션) 데이터의 처리를 선언적으로 작성하도록 지원하는 도구이다.데이터를 필터링하거나 변환하거나 집계하는 작업을 한다.람다 표현식과 결합하여 직관적이고 간결한 코드를 작성한다.컬렉션 데이터를 활용하여 filtering, Mapping, 축소 등의 작업을 처리한다함수형 프로그래밍 기법과 함께 사용한다.특징1. 스트림은 데이터를 소스로부터 연속적으로 처리하는 파이프라인을 구축한다.>>데이터 파이프라인 (Data Pipe Line) : 데이터를 사용하는 단계 흐름 절차를 나타낸다. 2. 데이터가 변경되지 않는다(불변성)스트림은 원본 데이터를 변경하지 않고 새로운 값을 반환한다. 3. 지연처리 : 중간중간 처리가 지연되어 최정 처리가 호출될 때 한 번에 처리된다.  기본 구성 요소리스트를..

JAVA 2025.03.21

메서드 참조 (Lambda)

메서드 참조?(::연산자)람더 표현식을 더 간결하게 작성할 수 있도록 지원하는 문법, 단순히 메서드를 호출만 하는 경우에 주로 사용한다. 1. 정적 메서드 참조정적 메서드는 인스턴스 없이 바로 사용가능하다.-className::staticMethodclass staticMethodRef{ static int doubleValue(int x){ return x*2; }} 1) 람다 표현식Function doubleLambda = x -> StaticMethodRef.doubleValue(x); 2)메서드 참조식  --> 쿨론 두개로 바로 메서드를 호출하라는 것을 명령어로 넣을 수 있다.Function doubleLambdaRef = StaticMethodRef::doubleValue..

JAVA 2025.03.20

람다식(Lambda) - 함수형 인터페이스 4가지(Predicate, Function, Consumer, Supplier)

함수형 인터페이스란?자바의 함수형 인터페이스는 딱 한가지 일을 처리하는 메서드들을 모아놓은 패키지이다.람다식의 기본문법은 위 링크를 참조하자https://bergerac.tistory.com/27 1. Predicate(판단하다) : 입력 값을 받아 조건을 검사하는 데에 사용한다.- boolean test(T t): 주어진 입력 값이 조건을 만족하면 true / 그렇지 않으면 false 반환- and(Predicate other), or(Predicate other), negate(): Predicate 조합에 사용 cf) negate(부정하다): 현재의 결과를 역전**여러 조건을 and or 등으로 조합할 수 있다.Predicate isEven = n -> n % 2 == 0;Predicate isPo..

JAVA 2025.03.19

Lombok(롬복)

롬복 이란?롬복(Lombok) 은 자바 개발 시 반복되는 코드(보일러플레이트 코드) 를 간결하게 만들어주는 라이브러리입니다.간단한 어노테이션(Annotation) 만으로 getter, setter, toString, 생성자 등을 자동으로 생성할 수 있어 생산성을 크게 높일 수 있습니다.✅ 보일러플레이트 코드(boilerplate code)반복적으로 작성해야 하는 코드로, 개발자가 직접 구현하지 않아도 되는 코드입니다.예) getter/setter, toString(), 생성자 등 롬복의 어노테이션 종류 및 사용법 @Getter, @Setter : 필드에 대한 getter, setter 메서드를 자동 생성.@ToString : 객체의 toString() 메서드를 자동 생성.@NoArgsConstructor..

JAVA 2025.03.18

Builder Pattern(빌더 패턴)

1. 빌더 패턴이란?객체 생성 방법 중 하나이며 복잡한 객체를 단계별로 만들 때 사용한다.필드(속성)가 많거나, 필드에 필수값과 선택값이 섞여 있을 때 유용하다. 2. 사용목적생성자가 너무 많아지거나 코드가 복잡하고 읽기 어려울 때 빌더 패턴을 통하여 간편하게 입력을 할 수 있다. 이를 통하여 가독성이 향상되고 유연성이 증가하며 확장성이 용이할 수 있으나 미리 빌더 패턴을 만들어 놓음으로써 구현 복잡성은 증가하며 작은 객체에는 부적합하다. 3. 동작 원리1) 객체 생성 시 필요한 데이터를 저장하는 Builder 클래스를 생성 2) Builder 클래스는 원하는 속성을 단계별로 설정할 수 있는 메서드를 제공 3) build() 메서드를 호출하여 객체 생성 4. 사용방법1) Builder 클래스 정의+필드정..

JAVA 2025.03.17

Singleton Pattern(싱글톤 패턴)

싱글톤 패턴이란?소프트웨어 설계 패턴 중 하나이다.클래스의 인스턴스가 하나만 생서오디도록 보장하며 해당 클래스의 인스턴스에 전역적 접근은 제공하지만 일관된 상태를 유지한다. 1) 사용목적객체의 유일성을 보장, 자원을 절약을 위하여 사용한다. 2) 장점자원의 중복생성을 방지하기 때문에 메모리사용에 있어서 최적화가 가능하며, 전역상태를 공유하고 통제된 접근을 할 수 있다. 3) 단점전역 상태의 관리가 어려우며 다른 클래스에 영향을 끼칠 수 있다. (결합의 가능성이 존재하기 때문) 단, 테스트가 어렵다는 단점이 있다. 사용방법1) 필드값:  반드시 static 으로 가진다 : 인스턴스화 없이 호출이가능하며 자원이 하나의 값을 가지기 때문이다.private static Singleton instance;2)생성..

JAVA 2025.03.16

Generic(제네릭)

제네릭은 데이터 타입을 데이터 타입을 일반화(Generalization)하여, 여러 타입을 처리할 수 있도록 하는 기능컴파일 시 타입을 체크할 수 있도록 도와준다.특정 타입에 의존하지 않고 다양한 타입을 지원하는 설계가 가능하다.주요장점 : 타입 안정성, 코드안정성, 코드 재사용성, 가독성1. 제네릭 사용 방법class 클래스명 { - 제네릭 타입을 사용하여 필드, 생성자, 메서드 정의}class Pair { // K: Key, V: Value private K key; private V value; public Pair(K key, V value) { this.key = key; this.value = value; } public K get..

JAVA 2025.03.15