일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring# API # Bean#App#Controller#Configuration#Component#AllArgsConstructor#Service#RestController#HTTP#ResponseBody#JSON#스프링#웹#애플리케이션#프레임워크#어노테이션#컨테이너#IoC컨테이너 #IoC#의존성
- java #멋사 # 소인수분해
- Java # DI # Static #Method #자바 # 의존성 주입 # 스태틱메소드 # This #오버로딩 #오버라이딩 #추상클래스
- JAVA #JAVASE#JAVAEE ##Thread #ThreadLocal #primitive type # reference type #바이트 코드 #동적로딩 #쓰레드 #기본데이터타입 #참조 데이터 타입 #클래스 로더 # 심볼릭레퍼런스 #자바 언어 #컴파일언어#스크립트언
- #리팩토링 #
- Map #HashMap #LinkedList# Array# Stack #Queue#링크드맵 #트리맵 #자바 개념 #자바 JAVA
- 스프링#자바#클라이언트#응답#요청 #파라미터#포스트맨 #HTTP#Postman#RequestBody#ResponseBody#Controller#Dto#package#Slf4j#JSON#Spring#SpringBoot#Data#데이터#프로토콜#GET#POST#PUT#DELETE#Code#Header#Body#Lombok
- java #메소드 # main메소드 #
- JAVA #JVM #GC #자바 #가비지컬렉터 # 제네릭 #Generic # Static #스태틱 # 접근제어자 #인터페이스 #추상클래스 #OOP # 객체지향 #객체지향적 프로그래밍 언어 # final
- SQL #SQLD # 제약조건 # 기본키 #외래키 # FK #PK #NOTNULL
- 우테코 # 우아한테크코스 # 백엔드# 회고록 # 우테코 6기 # 숫자야구게임 # 게임 #프로젝트
- Java #알고리즘 # 선택정렬 # 삽입정렬 # Insert Sort # Selection Sort #정렬
- Spring # Optional #Null # Read-all # 정적메소드# 클래스 #JPA#Service#Controller #App # 웹 # 애플리케이션 # Dto#객체 #팩토리#스프링부트#프레임워크
- OOP #객체지향프로그램 #절차지향 프로그래밍#함수형 프로그래밍# 객체지향프로그래밍 #SOLID # CallByValue #CallByReference#String#String Buffer#String Builder
- 토스 #토스개발자챌린지# next#코딩테스트 #토스 코테 #2024#온라인 코테#toss
- 우테코#우아한테크코스#6기 #우테코6기#자소서#회고#후기#자소서과정
- Spring#Springboot#Xml#Mapper#Interface#SQL#{}###$#MyBatis#yaml#Annotation#Private#public#Insert#Update#select#delete#쿼리#메소드#매개변수
- #시간복잡도 #o(n2)의 시간복잡도
- java #do-while문 #while # 멋사 # 개념정리
- java # 홀수 #약수#소수 #합 # 판별 #멋사
- Spring # IOC # Bean # Service # Component# Repository # Controller # RestController # Framework # 컨테이너 #의존성 # Json#@#비즈니스로직 # 컴포넌트 #어노테이션 #클래스 # 예시
- SQL #SQLD # DDL #DML# DCL# TCL # 트랜잭션 #개념 # 데이터베이스
- Spring#Skeleton#Service#controller#CRUD#DTO#ID#Read-all#Update#Delete#Create#JPA#class#interface#Repository#DB#의존성 주입#인터페이스#클래스#RequestMapping#method#메소드#요청#응답
- 최대최소값
- MVC #Model #Controller#View #Model1 #Model2 #MVC패턴#컨트롤러#뷰#모델#모델1#모델2
- Spring #CRUD#DELETE#UPDATE#CREATE#READ#DB#API#JAVA#스프링#삭제#생성#갱신#삭제#JSON
- Return
- #Java # private #constructor #Getter#Setter #List #ArrayList #LinkedList #생성자 #Generic #Collection #컬렉션 #제네릭
- SQLD#SQL#식별자#비식별자#데이터모델링 #개념 #정의 #엔터티#속성 #도메인 #관계 스키마 #ERD
- Today
- Total
말하는 햄zzi
Optional<T> / JPA 본문
Optional
: java8버전에 소개된, NULL이 될 가능성이 존재하는 데이터를 감싸
NULLPointExceotion이 발생하기 전 참조 객체가 NULL인지 아닌지 여부 확인 할 수 있도록 도와주는 객체
Optional 클래스 특징
- 값 존재 유무 나타내는 컨테이너 :
Optional은 값이 존재할 수도 있고 존재하지 않을 수도 있는 컨테이너 역할
값이 존재하는 경우, Optional 객체는 해당 값을 감싸고 0
값이 존재하지 않는 경우, Optional 객체는 비어있는 상태
- null 대신 Optional 사용:
Optional은 null 대신 사용할 수 있는 안전한 대안을 제공
null을 직접 다루는 것보다 Optional을 사용하여 코드의 가독성과 안정성을 높일 수 0
- 메서드 체이닝을 통한 안전한 값 접근:
Optional은 메서드 체이닝을 통해 안전하게 값에 접근할 수 있는 기능을 제공
이를 통해 null 체크를 간단하게 처리, null 예외를 방지할 수 0
Optional 클래스 주요 메서드
of(value) :
주어진 값으로 Optional 객체를 생성 / 값이 null이면 NullPointerException을 발생
ofNullable(value) :
주어진 값으로 Optional 객체를 생성 / 값이 null이라면 비어있는 Optional 객체를 생성
isPresent() :
Optional 객체 내에 값이 존재하는지 여부를 확인
get() :
Optional 객체 내의 값을 반환 / 값이 존재하지 않으면 NoSuchElementException을 발생
orElse(other) :
Optional 객체 내의 값이 존재하면 해당 값을 반환/ 값이 존재하지 않으면 주어진 기본값(other)을 반환
JPA
ex)
모든 학생 정보 읽어오기
AppController
@GetMapping("read-all")
public @ResponseBody List<StudentDto> readAll() {
this.service.readStudentAll();
return this.service.readStudentAll();
}
AppService
// READ ALL
public List<StudentDto> readStudentAll() {
// 새로운 StudentDto 객체를 저장할 리스트 생성
List<StudentDto> studentDtoList = new ArrayList<>();
// studentRepository에서 모든 StudentEntity를 가져와서 반복
for (StudentEntity studentEntity : this.studentRepository.findAll()) {
StudentDto studentDto = new StudentDto();
//StudentDto에 StudentEntity의 필드 값을 복사
studentDto.setId(studentEntity.getId());
studentDto.setName(studentEntity.getName());
studentDto.setEmail(studentEntity.getEmail());
// StudentDto를 studentDtoList에 추가
studentDtoList.add(studentDto);
}
return studentDtoList;
}
ex)
DTO 객체 정적 팩터리 메소드 패턴 활용
student Dto
import com.example.jpa.entities.StudentEntity;
import lombok.Data;
@Data
public class StudentDto {
private Long id; // Entity.id
private String name; // Entity.name
private String email; // Entity.email
// 정적 팩토리 메소드 패턴
public static StudentDto fromEntity(StudentEntity studentEntity) {
StudentDto dto = new StudentDto();
dto.setId(studentEntity.getId());
dto.setName(studentEntity.getName());
dto.setEmail(studentEntity.getEmail());
return dto;
}
}
> 정적 팩토리 메소드 패턴 < Static Method Factroy Pattern>
객체 생성 추상화, 클라이언트에게 직접적 생성방법 제공
정적 메서드를 통해 객체 생성/ 반환 방식 채택
AppService
// READ ALL
public List<StudentDto> readStudentAll() {
List<StudentEntity> studentEntityList = this.studentRepository.findAll();
List<StudentDto> studentDtoList = new ArrayList<>();
for (StudentEntity studentEntity : studentEntityList) {
studentDtoList.add(StudentDto.fromEntity(studentEntity));
}
return studentDtoList;
}
'Java > Spring' 카테고리의 다른 글
HTTP (0) | 2023.07.23 |
---|---|
Skeleton 프로젝트 (0) | 2023.07.13 |
IOC(Inversion of Control)-(2) (0) | 2023.07.13 |
IOC(Inversion of Control)-(1) (0) | 2023.07.12 |
MyBatis (0) | 2023.07.11 |