일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Component
- 티스토리챌린지
- map
- OOP
- Configuration
- JPQL
- entity
- Token
- springboot
- 스프링 부트
- 오블완
- 소프트웨어설계
- 자바
- 토큰
- devpi
- kotlin
- Stream
- ava백엔드
- 클래스
- JPA
- javamailsender
- Spring Boot
- BEAN
- 스프링
- 코틀린
- java
- 객체지향
- JWT
- Spring
- SpringFramework
- Today
- Total
목록Develop/Java (18)
DeveloPiano
Java 8 이후로 스트림을 사용하면 대량의 데이터를 선언적이고 함수형 스타일로 손쉽게 다룰 수 있습니다. 특히 여러 연산을 통해 데이터를 하나의 값으로 축약(리듀스) 하는 기능이 자주 필요한데, 이를 위해 reduce와 Collectors.reducing 메서드를 활용할 수 있습니다. 이 두 방법은 모두 “데이터 집합을 하나의 결과로 축약한다”는 공통된 목적을 수행하지만, 사용하는 시점과 시그니처가 다릅니다. 이번 포스팅에서는 각각을 자세히 살펴보고, 사용 예시와 활용 팁을 알아보겠습니다.1. reduce 메서드 (Stream 인터페이스)1.1 reduce란?reduce 메서드는 스트림의 모든 요소를 하나의 값으로 축약하기 위한 종결 연산(Terminal Operation)입니다. Java 8 스트림에..
String.repeat() 메서드는 Java 11부터 새롭게 도입된 문자열 메서드로, 특정 문자열을 지정한 횟수만큼 반복하여 연결한 새로운 문자열을 반환합니다. 이 메서드를 활용하면, 반복문 없이 간단히 문자열을 여러 번 반복하는 작업을 쉽게 처리할 수 있습니다.public String repeat(int count) 동작 방식원본 문자열을 count 횟수만큼 연속해서 이어 붙인 새로운 문자열을 반환합니다.count가 0이면 빈 문자열("")을 반환합니다.count가 1이면 원본 문자열과 동일한 문자열을 반환합니다.count가 음수면 IllegalArgumentException을 발생시킵니다. 사용 예시public class RepeatExample { public static void main..
Spring Boot를 사용하면서 DTO(Data Transfer Object)와 Entity 간의 매핑은 흔히 발생하는 작업입니다. 이러한 매핑을 직접 구현하는 것은 번거롭고, 코드가 중복되기 쉽습니다. MapStruct는 이러한 문제를 해결해주는 강력한 매핑 프레임워크로, 코드 작성을 최소화하면서 성능 좋은 매핑 코드를 자동으로 생성해 줍니다. 이번 포스트에서는 MapStruct의 개념과 간단한 예제를 통해 Spring Boot에서 어떻게 활용할 수 있는지 알아보겠습니다.MapStruct란?MapStruct는 Java에서 컴파일 타임에 매핑 코드를 생성하여 런타임 성능을 최적화하는 매핑 라이브러리입니다. DTO와 Entity 간의 변환이 필요한 경우, MapStruct를 사용하면 매핑 코드를 수동으로..
Java의 Optional 클래스는 값이 있을 수도 있고 없을 수도 있는 상황을 처리하기 위해 설계된 클래스입니다. 특히, JPA와 같은 ORM 프레임워크에서 쿼리 결과를 다룰 때 Optional은 많이 사용됩니다. 이번 포스팅에서는 Optional>, Optional의 타입을 다룰 때 각 메서드인 isEmpty()와 isPresent()의 차이점과 그 상관관계에 대해 설명하겠습니다.1. Optional 개념 정리Optional은 Java 8에 도입된 클래스이며, 값이 존재할 수도 있고 존재하지 않을 수도 있는 객체를 표현하기 위해 사용됩니다. 이를 통해 null 값을 직접 처리하는 것을 피하고, 더 명확하고 안전한 코드를 작성할 수 있습니다. 2. Optional> 사용 시 동작1) Optional>란..
Java 8에서 도입된 Stream API는 데이터를 처리하고 변환하는 방식을 혁신적으로 개선했습니다. 컬렉션이나 배열의 데이터를 함수형 프로그래밍 스타일로 처리할 수 있도록 지원하며, 복잡한 데이터 처리 로직을 간결하고 직관적으로 구현할 수 있게 합니다. 이번 포스트에서는 Java Stream의 개념과 주요 기능을 살펴보고, 다양한 예시를 통해 어떻게 활용할 수 있는지 알아보겠습니다.Java Stream이란?Java Stream은 데이터 소스의 요소들을 추상화하여 일련의 연산(필터링, 매핑, 집계 등)을 처리할 수 있는 API입니다. 스트림을 사용하면 반복문 없이 선언적이고 함수형 프로그래밍 스타일로 데이터를 처리할 수 있습니다. 예를 들어, 리스트의 요소를 필터링하거나, 맵핑하여 변환하고, 집계하는 ..

이번 포스트에서는 스프링 부트를 활용하여 회원가입 시 이메일 인증을 요구하는 API를 구현하는 방법을 설명합니다. 사용자에게 인증 이메일을 전송하고, 이메일에 포함된 버튼을 클릭해야만 회원가입이 완료되는 구조입니다. 이 과정에서는 이메일 템플릿을 Thymeleaf로 구성하며, 인증 정보는 데이터베이스(DB)에 저장합니다.1. Gradle 설정이메일 인증 API를 구현하기 위해 먼저 필요한 의존성을 build.gradle 파일에 추가합니다. 아래 코드를 참고하여 의존성을 설정합니다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-mail' implementation 'org.springframework.boo..
이 포스트에서는 스프링 부트를 사용하여 간단한 이메일 전송 API를 구현하는 방법을 설명합니다. 이메일 전송 기능은 여러 웹 애플리케이션에서 유용하게 사용되며, 스프링 부트와 JavaMailSender를 활용하면 간단히 구현할 수 있습니다.Gradle 설정이메일 전송 기능을 구현하기 위해 필요한 의존성을 build.gradle 파일에 추가합니다.plugins { id 'org.springframework.boot' version '3.1.0' id 'io.spring.dependency-management' version '1.0.15.RELEASE' id 'java'}group = 'com.example'version = '0.0.1-SNAPSHOT'sourceCompatibility ..
자바의 기본 String 클래스는 강력하고 유용하지만, 일부 문자열 관련 작업들은 더 효율적이거나 안전한 방법이 필요할 때가 있습니다. 이런 상황에서 Apache Commons Lang 라이브러리의 StringUtils 클래스는 매우 유용합니다. 이 블로그 포스트에서는 StringUtils가 제공하는 주요 기능과 장점, 그리고 기본 String 메소드를 어떻게 효과적으로 대체할 수 있는지 살펴보겠습니다.StringUtils의 핵심 장점Null 안전성String 메소드를 사용할 때는 종종 null 값에 대한 추가적인 처리가 필요합니다. 예를 들어, null 값을 가진 문자열에 .equals()나 .length()를 호출하면 NullPointerException이 발생합니다. 반면, StringUtils는 ..
자바 개발자라면 데이터베이스와의 상호 작용이 필수적인데, JPA(Java Persistence API)는 이를 간소화하며 객체 지향적으로 데이터베이스를 관리할 수 있게 해줍니다. 특히, 엔티티 간의 관계를 매핑하는 것은 JPA를 사용하는 데 있어 중요한 부분입니다. 본 글에서는 JPA의 세 가지 주요 관계 매핑 타입인 @OneToOne, @ManyToOne, @ManyToMany에 대해 자세히 살펴보겠습니다.@OneToOne 관계@OneToOne 관계는 엔티티 간에 1:1 관계를 나타냅니다. 각 엔티티 인스턴스는 다른 엔티티의 단 하나의 인스턴스와 연결됩니다. 예를 들어, 한 사람이 하나의 여권을 소유하는 관계가 이에 해당합니다.@Entitypublic class Person { @Id @Ge..
자바는 객체 지향 프로그래밍 언어로서, 데이터와 행위를 캡슐화하는 클래스라는 구조를 사용해왔습니다. 최근 자바 14에서 도입된 레코드(record)는 자바 16부터 정식 기능으로 포함되어, 특히 데이터 전송과 같은 상황에서 더 간결하고 효율적인 프로그래밍을 가능하게 해줍니다. 본 글에서는 자바의 클래스와 레코드에 대해 자세히 알아보고, 각각의 정의와 특징 그리고 어떻게 사용되는지를 비교해 보겠습니다.클래스(Class)란?자바에서 클래스는 객체의 청사진으로 사용됩니다. 클래스를 통해 객체의 상태를 정의하는 필드(변수)와 객체의 행동을 정의하는 메소드(함수)를 하나의 단위로 묶을 수 있습니다. 클래스의 주요 특징상태와 행동의 캡슐화 : 클래스는 데이터와 데이터를 조작하는 메소드를 함께 묶어 관리합니다.재사용..