Map이란?map은 스트림 내부의 요소 하나하나에 접근해서 제가 파라미터로 넣어준 함수를 실행한 뒤 최종연산에서 지정한 형식으로 반환해주는 메서드 입니다. List people = Arrays.asList( new Person("personA", 24), new Person("personB", 26), new Person("personC", 28), new Person("personD", 30) );위와 같은 리스트를 예시로 만들어보겠습니다. List nameList = people.stream() .map(person -> person.getName()..
간단정리DAO : 실제 Database에 접근하는 역할을 하는 객체.DTO : 데이터를 전달하기 위한 객체VO : 값 자체를 표현하는 객체. (변경 불가능하며 오직 읽기만 가능 (Read-Only))Entity : 실제 DB 테이블과 매핑이 되는 클래스.DAO (Data Access Object)DAO는 Data Access Object의 약자로, 실제로 Database(DB)의 데이터에 접근하기 위한 객체를 가리킨다.DB에 접근하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용한다. 직접 DB에 접근하여 data를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다.JPA에서는 DB에 데이터를 CRUD 하는 JpaRepository를 상속받는 Repository 객체들이 DAO라고 볼 수 있습니다..
@Data @Data는 @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode을 한꺼번에 설정해주는 매우 유용한 어노테이션입니다. @Data public class User { // ... } 사용 방법은 다른 어노테이션들과 대동소이합니다. 클래스 레벨에서 @Data 어노테이션을 붙여주면, 모든 필드를 대상으로 접근자와 설정자가 자동으로 생성되고, final 또는 @NonNull 필드 값을 파라미터로 받는 생성자가 만들어지며, toStirng, equals, hashCode 메소드가 자동으로 만들어집니다. @Builder 어노테이션 만일 이 어노테이션이 없었다면 After 부분을 일일이 직접 구현해줘야했다. // Before: ..
모든 기능을 추상화로 정의만 하고 구현은 하지 않은것을 의미한다. 객체지향 solid 개발을 구현하게 도와줍니다. 인터페이스(interface)란? 자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가지게 될 것입니다. 하지만 클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등 여러 가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않습니다. 하지만 다중 상속의 이점을 버릴 수는 없기에 자바에서는 인터페이스라는 것을 통해 다중 상속을 지원하고 있습니다. 인터페이스(interface)란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다. 인..
자바 스레드(Thread)와 멀티 스레드(Java Multithreading) 자바 프로그래밍에서 가장 중요한 기능 중에 하나가 바로 Multithreading이다. 그만큼 코딩 과정에서 많이 사용하는 기능이자 멀티스레드를 어떻게 사용하느냐에 따라서 프로그램의 효율성도 달라진다. # 멀티 쓰레드와 멀티 프로세스 우선 멀티 쓰레드와스레드와 멀티 프로세스에 대해서 간략하게 확인하고 가자. 멀티 스레드와 멀티 프로세스에 대해서 혼란스러워하는 경우가 있는데 둘은 다른 기능을 의미한다. 멀티 스레드는 하나의 프로세스에서 여러 개의 작업을 하도록 해주는 기능이며, 멀티 프로세스는 여러 개의 프로세스를 사용하여 병렬적 일 처리를 할 수 있게끔 해주는 기능을 의미한다. 아래의 그림을 참고하면 이해하기 훨씬 쉬울 것이다..
메소드 참조(method reference) 메소드 참조(method reference)는 람다 표현식이 단 하나의 메소드만을 호출하는 경우에 해당 람다 표현식에서 불필요한 매개변수를 제거하고 사용할 수 있도록 해줍니다. 메소드 참조를 사용하면 불필요한 매개변수를 제거하고 다음과 같이 '::' 기호를 사용하여 표현할 수 있습니다. 문법 클래스이름::메소드이름 또는 참조변수이름::메소드이름 다음 예제는 두 개의 값을 전달받아 제곱 연산을 수행하는 Math 클래스의 클래스 메소드인 pow() 메소드를 호출하는 람다 표현식입니다. (base, exponent) -> Math.pow(base, exponent); 위의 예제는 단순히 Math 클래스의 pow() 메소드로 인수를 전달하는 역할만 하므로, 메소드 참..
Lambda 익명 클래스의 사용을 Java SE 8부터는 람다 표현식을 사용하여 자바에서도 함수형 프로그래밍을 할 수 있게 되었습니다. 더욱 간결하고 직관적으로 구현 가능 불필요한 코드를 줄이고, 가독성을 높임 (매개변수목록) -> {함수몸체} Runnable runnable = new Runnable(){ @Override public void run(){ System.out.println("Hello world !"); } }; Runnable runnable = () -> System.out.println("Hello world two!"); int min(int x, int y) { return x x < y ? x : y; 위의 예제처럼 메소드를 람다..