모던 자바: 자바 8에서 자바 21까지 심층 가이드
·
Language/Java
해당 글은 아래 링크의 내용을 번역 + 추가한 것 입니다.https://medium.com/java-and-beyond/modern-java-an-in-depth-guide-from-version-8-to-21-by-akiner-alkan-f89b50e13c72 0. 서론자바는 다재다능한 프로그래밍 언어로, 변혁의 여정을 걸어왔습니다.자바 8부터 흥미로운 기능들이 개발자들의 코딩 방식을 바꾸어 놓았습니다.  더 나은 기능을 위한 깔끔한 람다 표현식부터 데이터를 더 쉽게 다룰 수 있도록 해준 Stream API까지, 자바 8은 혁신적인 변화를 가져왔습니다.우리는 자바 21까지의 업데이트를 살펴볼 것입니다.이 현대적인 자바 기능들을 간단한 설명과 실용적인 예제로 풀어가며 함께 여정에 동참해 보세요.이 여정이..
[Java] Function 인터페이스를 활용한 조회 로직 개선
·
Language/Java
1. 상황로아투두 프로젝트를 진행하면서 Member Entity를 조회하는 여러 메소드들이 있었는데,그 중 회원 한명을 조회하는 Get 메소드는 입력받은 파라미터만 다르고 거의 동일한 join 구문과 fetch 로직이 반복되고 있었습니다.이러한 상황에서 새로운 join이 필요하거나 파라미터가 추가될 때마다 모든 관련 메소드를 수정해야 하는 번거로움이 있었죠. [username으로 조회하는 메소드와 id로 조회하는 메소드]@Overridepublic Optional get(String username) { return Optional.ofNullable( factory.select(member) .from(member) ..
[Java] 오버로딩(OverLoading)??
·
Language/Java
1. 오버로딩(OverLoading)이란? 메서드는 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 합니다. 그러나 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있습니다. 이것을 오버로딩(OverLoading)이라고 합니다. 2. 오버로딩(OverLoading)의 조건 메서드 이름이 같아야 합니다. 매개변수의 개수 또는 타입이 달라야 합니다. 변환타입은 영향이 없습니다. 3. 예시 3 - 1. 대표적인 예시 "println" 가장 대표적인 예시로 println 메서드가 있습니다. println메서드를 호출할 때 매개변수로 지정하는 값의 타입에 따라서 호출..
[Java] Java8 표준 함수형 인터페이스
·
Language/Java
Java 8에서 기본으로 제공하는 함수형 인터페이스는 무엇이 있을까? 참고링크 1. 표준 함수형 인터페이스 Java 8부터 기본으로 제공하는 함수형 인터페이스 Java.lang.function 패키지 활용 예시 ArrayList 클래스의 forEach 메소드를 보면 Consumer를 매개 값으로 활용하고 있는 것을 알 수 있다 Consumer : T를 받아서 아무 값도 리턴하지 않는 함수형 인터페이스 public class ArrayList extends AbstractList @Override public void forEach(Consumer
[Java] ::new 는 무엇일까? Java 8 메소드 레퍼런스 (Method Reference)
·
Language/Java
온라인 상의 자바 예시 코드를 보면 종종 Member::new 이런식으로 ::new 혹은 다른 메소드로 코드가 짜여진 경우가 있다 1. 메소드 레퍼런스 람다 표현식을 구현할 때 쓸 수 있는 방법으로 기존에 있던 다른 메소드를 참조하여 그 메소드 자체를 함수형 인터페이스의 구현체로 사용 람다의 구현 자리를 기존에 이미 있는 어떤 메서드를 참조하는 방식 람다 표현식이 단 하나의 메소드만을 호출하는 경우에 해당 람다 표현식에서 불 필요한 매개변수를 제거하고 사용할 수 있다. :: 연산자를 이용해 메소드 이름과 클래스를 분리하거나, 메소드 이름과 객체의 이름을 분리한다. 클래스::메소드 객체::메소드 클래스::new 2. 유형 1) 스태틱 메소드 참조(Static Method Reference) 클래스::정적메..
[Java] Java8 Optional : orElse, orElseThrow, orElseGet
·
Language/Java
Optional의 예외처리 - orElse(default)는 Optional 값에 null이 들어올 경우에 orElse의 default 값으로 return - orElseGet(() -> default)은 Optional 값에 null이 들어올 경우에 default 값으로 return - orElseThrow는 Optional 객체가 비어있을 경우에 예외를 던짐 -> 그렇다면 orElse와 orElseGet의 차이가 없는건가? 이거에 대한 내용은 "Optional을 올바르게 사용하기 위한 방법을 제공하는 26가지" 글에 나와있다. 26 Reasons Why Using Optional Correctly Is Not Optional - DZone We take a look at the top 25 most ..
[Java] 도메인 모델 패턴, 트랜잭션 스크립트 패턴
·
Language/Java
마틴 파울러가 재창한 두개의 개념으로, 비즈니스 로직을 처리하는 2가지 패턴을 말한다. 책임 소재가 Domain Level이냐 Script Level이냐의 차이에 따라 구분된다. 📕 도메인 모델 패턴 (Domain Model Pattern) 📗 도메인 모델 패턴이란? Domain 부분에서 비즈니스 로직을 가지고 있는 패턴 대부분의 비즈니스 로직이 엔티티 안에 구성되어 있어 객체지향의 특성을 적극 활용 📗 장단점 장점 객체 지향에 기반한 재사용성, 확장성, 유지 보수의 편리함 단점 하나의 도메인 모델을 구축하는 데 많은 노력필요 📗 예시 @Getter @Setter @AllArgsConstructor @NoArgsConstructor @Builder public class DayTodo { private ..
[Java] int와 Integer, boolean과 Boolean
·
Language/Java
📕 기본 자료형 (Primitive Type) 📗 기본 자료형이 무엇인가? 기본 자료형은 프로그래밍 언어에서 제공하는 가장 기본적인 데이터 타입으로, 변수에 저장되는 데이터의 값을 직접 담는다. 📗 기본 자료형의 특징 null 값을 허용하지 않는다. 정해진 메모리를 할당한다. 스택(stack) 영역에 저장된다. 📗 기본 자료형의 종류 int 정수 값을 저장하는 기본 자료형. 예를 들면, 1, -42, 100 등의 정수. boolean: 참 또는 거짓을 나타내는 논리 자료형. true 또는 false. byte: 작은 정수 값을 저장하는 기본 자료형으로, -128부터 127까지의 값을 표현. 주로 메모리 절약이 필요한 경우에 사용한다. char 유니코드(Unicode) 문자 하나를 저장하는 기본 자료형으로..
[Java] UUID (Universally Unique IDentifier)
·
Language/Java
📕 UUID란? 네트워크 상에서 고유성이 보장되는 id를 만들기 위한 표준 규악 Univeraslly Unique Identifier의 약어이고 범용 고유 식별자라고 함 주로 분산 컴퓨팅 환경에서 사용되는 식별자 128비트의 숫자이며, 32자리의 16진수로 표현됨 8자리-4자리-4자리-4자리-12자리 패턴의 하이픈을 집어 넣어 5개의 그룹으로 구분 📕 UUID 사용 업로드된 파일명의 중복을 방지하기 위해 파일명을 변경할 때 사용 첨부파일 파일 다운로드시 다른 파일을 예측하여 다운로드하는 것을 방지하는데 사용 일련번호 대신 유추하기 힘든 식별자를 사용하여 다른 컨텐츠의 임의 접근을 방지하는데 사용 📕 Java에서 UUID 사용 Java에서는 무작위 랜덤 생성 버전인 UUID 4버전과 해쉬를 이용해 생성하는..