본문 바로가기
728x90

개발/Java47

[Java] OrElse, OrElseGet 차이 Optional 의 orElse, orElseGet 차이점에 대해서 알아보자 Optional은 자바 8부터 도입된 클래스로, 값이 있을 수도 있고 없을 수도 있는 상황을 처리하는 데 사용된다. Optional은 값이 있는지 없는지를 명시적으로 표현함으로써 NullPointerException을 방지하고, 코드의 가독성을 높여준다. orElseGet와 orElse는 Optional 객체에서 값을 가져오는 메서드 중 두 가지이다. 1. orElseGet 값이 존재하지 않을 경우에만 실행되는 함수를 인수로 받는다. 값이 존재하지 않을 때마다 이 함수가 호출되며, 이 함수의 반환값이 Optional의 값이 된다. 이 함수는 Supplier를 매개변수로 받아야 하므로 지연 로딩(lazy loading)에 적합하다.. 2024. 4. 15.
[Java] DTO, DAO, VO 차이 알아보기 DTO (Data Transfer Object), DAO (Data Access Object), VO (Value Object)는 데이터 관련 프로그래밍에서 자주 사용되는 용어이다. 1. DTO (Data Transfer Object) 용도: 데이터를 전송하거나 데이터베이스에서 검색된 데이터를 저장하는 데 사용 특징: DTO는 주로 데이터 전송과 관련된 역할을 하는 객체로, 특정 비즈니스 로직을 포함하지 않는다. 주로 데이터의 구조를 정의하고, 데이터를 한 곳에서 다른 곳으로 전송하는 데 사용된다. 예를 들어, 웹 요청에서 데이터를 수신하거나 웹 응답으로 데이터를 보낼 때 사용할 수 있다. 예시: 사용자 등록 요청을 처리하는데 사용되는 DTO, 데이터베이스에서 검색한 사용자 정보를 저장하는데 사용되는 D.. 2023. 10. 10.
[Java] 오브젝트: 코드로 이해하는 객체지향 설계 (2) 조영호님의 오브젝트 읽고! 자세한 내용은 도서를 구입해서 보세요! 1. 영화 예매 시스템 만들기 - 상영클래스 public class Screening { private Movie movie; private int sequence; private LocalDateTime whenScreened; ... 생성자 ... public LocalDateTime getStartTime() { return whenScreened; } public boolean isSequence(int sequence) { return this.sequence == sequence; } public Money getMoviceFee() { return movie.getFee(); } public Reservation reserve.. 2023. 10. 2.
[Java] 오브젝트: 코드로 이해하는 객체지향 설계 (1) 조영호님의 오브젝트 읽고... 자세한 내용은 도서 구입 후 확인... 1. 티켓 판매 애플리케이션 구현 - 초대장 클래스 public class Invitation { private LocalDateTime when; } - 티켓 클래스 public class Ticker { private Long fee; public Long getFee() { return fee; } } - 관람객 가방 클래스 public class Bag { private Long amount; private Invitation invitation; private Ticket ticket; public boolean hasInvitation() { return invitation != null; } public boolean ha.. 2023. 9. 22.
[Java] Record 알아보기 1. Recode란? Record는 자바 14에서 도입되었고, 16에서 정식으로 채택된 클래스이다. 데이터를 다루기 위한 데이터 클래스로 사용된다. 자동으로 생성자를 만들어주고, getter, equals, hashCode, toString을 자동으로 생성한다. 필드를 final로 생성해줘서 불변 데이터로 관리할 수 있다. Record 클래스는 주로 데이터를 보관하고 전달하기 위한 목적으로 사용되며, 레코드 타입(Record Type)이라고도 한다. 2. 예시 public record ClassName(parameters) { // 필드 정의 } public record Person(String name, int age) { } public class RecordExample { public static.. 2023. 9. 20.
[Java] 자바 JDK 21 버전 특징 JDK 21이 2023년 9월 19일에 릴리즈될 예정이다. String Templates (Preview) [JEP-430] Sequenced Collections [JEP-431] Generational ZGC [JEP-439] Record Patterns [JEP-440] Pattern Matching for switch [JEP-441] Foreign Function & Memory API (Third Preview) [JEP-442] Unnamed Patterns and Variables (Preview) [JEP-443] Virtual Threads [JEP-444] Unnamed Classes and Instance Main Methods (Preview) [JEP-445] Scoped Val.. 2023. 8. 31.
[Java] 테스트가 어려운 코드 최범균님의 '테스트 주도 개발 시작하기'를 읽으면서 정리해본 글. - 모든 코트를 테스트할 수 있는 것은 아님. 1. 하드코딩된 경로 - 예시 public void sync() throws IOException { Path path = Paths.get("D:\\data\\pay\\test.csv"); ...(중략)... } 위 코드에서 파일 경로가 하드코딩 되어 있다. 이 코드를 테스트하려면 해당 경로에 파일이 반드시 위치해야 한다. 만약 윈도우에 D드라이브가 없으면 테스트가 불가능하다. 또한, 윈도우 전용 파일 경로를 사용하고 있기 때문에 맥이나 리눅스로는 테스트가 불가능하다. 2. 의존 객체를 직접 생성 - 예시 // 의존 대상을 직접 생성 private PayInfoDao payInfoDao = .. 2023. 8. 23.
[Java] 자바 LTS 버전 별 특징 Java 8 (LTS): 람다 표현식 및 함수형 프로그래밍 지원 추가. Stream API로 데이터 처리를 더 효과적으로 할 수 있게 함. java.time 패키지로 새로운 날짜 및 시간 API 도입. PermGen 메모리 영역을 제거하고 Metaspace로 대체. Nashorn JavaScript 엔진 도입. Default 메소드로 인터페이스의 기능 확장 가능. Java 11 (LTS): 지역 변수 유형 추론 (var) 도입. HTTP 클라이언트 표준 모듈 추가. 로우 레벨의 운영체제 및 네트워킹 기능에 접근할 수 있는 ZGC(Z Garbage Collector) 도입. Flight Recorder 및 Mission Control 도구가 OpenJDK에 포함됨. 표준 파일 I/O 라이브러리 개선 (ja.. 2023. 8. 17.
[Java] 자바로 테스트 코드 작성 순서 알아보기 최범균님의 '테스트 주도 개발 시작하기'를 읽으면서 정리해본 글. 1. 초반에 복잡한 테스트부터 시작X 초반부터 다양한 조합을 검사하는 복잡한 상황을 테스트로 추가하면 해당 테스트를 통과시키기 위해 한 번에 구현해야 할 코드가 많아진다. 2. 구현하기 쉬운 테스트부터 시작하기 구현하기쉬운 경우부터 시작하면 빠르게 테스트를 통과시킬 수 있다. 보통 수 분에서 십여 분 이내에 구현을 완료해서 테스트를 통과시킬 수 있을 만큼 쉬운 것을 선택한다. 3. 예외 상황을 먼저 테스트 다양한 예외 상황은 복잡한 if-else 블록을 동반할 때가 많다. 예외 상황을 전혀 고려하지 않은 코드에 예외 상황을 반영하려면 코드의 구조를 뒤집거나 코드 중간에 예외 상황을 처리하기 위해 조건문을 중복해서 추가하는 일이 벌어진다. .. 2023. 7. 24.
728x90