[ch.06] 스트림을 이용한 데이터 처리
·
함수형 프로그래밍
데이터 소스를 일관되고 선언적인 방식으로 처리할 수 있게 해주는 API스트림은 데이터의 흐름을 추상화한 개념으로, 데이터를 필터링, 매핑 등의 작업을 수행할 수 있게 해 준다.데이터 처리에 대한 선언적이고 지연 평가된 접근법을 제공한다. 1. 반복을 통한 데이터 처리모든 데이터 처리는 파이프라인 방식으로 작동하는데, DB에서 조회한 데이터를 컬렉션 자료 구조에 넣거나 필터링, 변환 같은 다양한 작업들을 거쳐 결과를 제공한다.public static void main(String[] args) { List list = Arrays.asList("apple", "banana", "apricot", "orange"); List newList = new ArrayList(); for (Strin..
[ch.05] 레코드
·
함수형 프로그래밍
레코드는 간단한 구문으로 다양한 형태의 데이터를 집계할 수 있는 기능을 가진다. 데이터 집계란 특정 목적을 위해 데이터를 모으고 구조화하는 것을 의미한다.대표적으로 튜플이 있다. 튜플여러 값을 하나의 묶음으로 저장할 수 있는 자료형1. 구조적 튜플데이터의 순서와 개수를 기준으로 정의데이터의 타입과 순서에만 의존하므로 인덱스를 통해서만 접근이 가능하다.// Java는 기본적으로 튜플 제공 x, 외부 라이브러리나 레코드를 통해 유사한 구조를 만들 수 있다.//org.apache.commons.lang3.tuple.Pair 라이브러리를 사용한 구조적 튜플 예제public class TupleExample { public static void main(String[] args) { Pair p..
[ch.04] 가변성 & 불변성
·
함수형 프로그래밍
가변성자바에서는 객체의 상태를 가변 형태로 캡슐화한다.객체의 필드를 private 으로 선언하여 외부에서 직접 접근하지 못하도록 한다.대신, getter와 setter 등을 통해 객체 내부에 접근하고 변경할 수 있도록 캡슐화한 것이다.가변 상태를 다루는 자바 객체들이 있는데 이들은 컴포넌트 간의 재사용성을 향상시키기 위해 상태값을 캡슐화하도록 설계되었다.POJO /  JavaBean  1. POJO특별한 제한이나 요구 사항 없이 단순한 자바 객체를 의미한다.비즈니스 로직 상태를 캡슐화하는 것이 목적이며, 불변성을 갖도록 설계할 수 있다.가변 상태를 가진 객체 지향적인 컨텍스트에서 유연하게 작동하도록 필드에 getter와 setter를 제공한다.public class Person { private S..
RestTemplate Interceptor - 인증 헤더 추가
·
Toy
외부 API를 사용하여 해외 축구 결과를 조회할 수 있는 토이 플젝을 시작했다. 먼저 API 호출을 위해 데이터가 간단한, 선수 데이터를 호출했다. 데이터가 정상적으로 조회되었으나 뭔가 불편한 생각이 든다. 1. 리그, 팀, 경기 등의 데이터를 호출할 때마다 uri, header 코드를 각 서비스마다 작성해줘야한다.2. 간단한 GET 요청에 exchange()를 사용하는 것이 맞는걸까. 물론 exchange()를 통해 요청을 더욱 세밀하게 제어할 수 있다.하지만 간단한 GET 요청이며 코드가 반복되는 상황을 최대한 줄이고 싶다. RestTemplate을 생성할 때 uri와 header 값을 같이 넣어준다면 마지막 코드 한 줄로 정리되지 않을까.  RestTemplate Interceptor인증 헤더 추가..
영속성 컨텍스트
·
JPA
먼저 영속성 컨텍스트를 생성하고 관리하려면 엔티티 매니저 팩토리와 엔티티 매니저가 필요하다. Entity Manager Factory (이하 emf)이름 그대로 엔티티 매니저를 만드는 공장인데 생산 비용이 굉장히 크다.JPA를 동작시키기 위한 기반 객체 생성DB 커넥션 풀 생성DB를 하나만 사용하는 애플리케이션은 일반적으로 emf를 하나만 생성한다.여러 스레드가 동시에 접근해도 안전하므로 서로 다른 스레드 간에 공유가 가능하다.Entity Manager (이하 em)emf가 공장이라면 em은 공장을 관리하는 매니저이다.em을 사용하여 엔티티를 DB에 CRUD할 수 있다.em은 내부에 DB 커넥션을 유지하면서 DB와 통신한다.em을 가상의 DB로 생각할 수 있다.DB 커넥션과 밀접한 관계를 가지므로 여러 ..
[ch.03] JDK 함수형 인터페이스
·
함수형 프로그래밍
1. 자바 함수형 인터페이스Function : 인수를 받고 결과를 반환 한다.Consumer : 인수만 받고 결과는 반환 하지 않는다.Supplier : 인수를 받지 않고 결과만 반환 한다.Predicate : 인수를 받아서 표현식에 대해 테스트하고 boolean 값을 결과로 반환 한다.Function하나의 입력과 출력을 가진 전통적인 함수단일 추상 메서드는 apply 로 T 타입의 인수를 받아 R 타입의 결과를 생성한다.@FunctionalInterfacepublic interface Function { R apply(T t);} 문자열을 정수로 변환하거나 객체의 속성을 추출Function strLength = str -> str != null ? str.length() : 0;Integer leng..