본문 바로가기

전체 글

(99)
2022/02/06 TIL 인프런 JPA 기본편 값 타입 컬렉션 값 타입은 식별자가 없기 때문에 생명주기를 엔티티를 의존한다. 하지만 이렇게 되면 값을 수정할 때마다 존재하는 값을 전부 지우고 수정하는 데이터를 새로 만들게 돼서 성능이 떨어진다. 따라서 OneToMany로 사용하는 것이 좋고(값 타입을 엔티티로 승격), 만약 값 타입으로 사용해야 한다면 불변 객체로 사용하는 것이 좋다. 값 타입 만드는 법 @ElementCollection @ColloectionTable(name = "ADDRESS", joinColumns = @JoinColumn(name = "MEMBER_ID")) private List addressHistory = new ArrayList();
2022/02/05 TIL Thd Red : STREAM Supplier 인자는 받을 수 없고 값을 리턴하기만 한다. 공식문서 @FunctionalInterface public interface Supplier { T get(); }예제 1) @Test void test_supplier(){ Supplier mySupplier = () -> "hello supplier"; assertThat(mySupplier.get()).isEqualTo("hello supplier"); }mySupplier는 get()이라는 하나의 메서드만 가지고 있기 때문에 () -> "hello supplier"; 를 할당하면 get()에 할당이 되게 된다. 예제 2) @Test void test_supplier_with_method(){ Supplier..
2022/02/04 TIL (JAVA8) The RED : JAVA STREAM 2장, 3장 함수는 동사로, 객체는 명사로 이름을 짓는다. OOP를 하다 보면 명사로만 추상화를 하게 되는데 동사로 추상화하는 게 좋은 경우가 있다. 명령형 프로그래밍과 선언형 프로그래밍의 일처리는 다르다. 함수형 프로그래밍이 언제 필요한지 몰랐었는데 동사를 추상화할 떄 필요하단 것을 알게 되었다. 1급 시민의 조건 함수/메서드의 매개변수로 전달할 수 있는가 함수/메서드의 반환 값이 될 수 있는가 변수에 담을 수 있는가 객체는 1급 시민의 조건을 갖추고 있으므로 함수를 객체처럼 만든다면 1급 시민이 될 수 있다. JAVA8에서 함수형 프로그래밍을 지원하는 방법이기도 하다. Funcational Interface 어노테이션이다. 추상메서드를 1개 가지고 있어야 한다...