이번에는 자바8에 추가된 CompletableFuture에 대해 알아보도록 하겠습니다. 1. CompletableFuture에 대한 이해 [ Future의 단점 및 한계 ] Java5에 Future가 추가되면서 비동기 작업에 대한 결과값을 반환 받을 수 있게 되었다. 하지만 Future는 다음과 같은 한계점이 있었다. 외부에서 완료시킬 수 없고, get의 타임아웃 설정으로만 완료 가능 블로킹 코드(get)를 통해서만 이후의 결과를 처리할 수 있음 여러 Future를 조합할 수 없음 ex) 회원 정보를 가져오고, 알림을 발송하는 등 여러 작업을 조합하거나 예외 처리할 수 없음 Future는 외부에서 작업을 완료시킬 수 없고, 작업 완료는 오직 get 호출 시에 타임아웃으로만 가능하다. 또한 비동기 작업의 ..
java
Map 인터페이스에서 Java 8 버전에 추가된 일부 API에 대해 살펴봅니다. putIfAbsent() compute() computeIfPresent() computeIfAbsent() getOrDefault() 해당 코드는 Map 인터페이스의 구현체인 HashMap을 기준으로 정리하였습니다. 1. putIfAbsent(K key, V value) Map - putIfAbsent() putIfAbsent() 메서드는 네이밍에서 유추할 수 있듯이, 다음과 같이 동작합니다. Key가 존재할 경우: Value 변경 없이 기존에 존재하는 Key의 Value를 리턴합니다. Key가 존재하지 않는 경우: Key에 해당하는 Value를 저장한 후 null을 리턴합니다. HashMap - putIfAbsent() ..
시작하기전 예제코드는 여기에 있습니다. JUnit5 문서기반으로 번역과 공부하고, 실졔로 사용하면서 필요한 내용을 조금 보강했습니다. 다른 곳에 공유해도 좋지만, 출처만 남겨주시면 됩니다. JUnit5 이전 JUnit 버전과 다르게, JUnt5는 세개의 서브 프로젝트로 이루어져 있다. JUnit5은 JUnit Platform + JUnit Jupiter + JUnit Vintage 이 세개가 합친 것이다. JUnit Platform JUnit Platform은 JVM에서 테스트 프레임워크를 실행하는데 기초를 제공한다. 또한 TestEngine API를 제공해 테스트 프레임워크를 개발할 수 있다. JUnit Jupiter JUnit Jupiter는 JUnit 5에서 테스트를 작성하고 확장을 하기 위한 새로..
리뷰 엔티티에서 ColumnDefault를 사용해 리뷰를 만들 때 rating을 0으로 초기화 하고자 했는데 아래와 같은 에러를 마주하였다.java.sql.SQLException: Column 'rating' cannot be null자바의 rating 값이 null 로 전달된 것이다. 왜 이렇게 되었을까?@ColumnDefault()필자가 사용한 코드는 아래와 같다. ColumnDefault에 값이 0으로 올바르게 설정되어 있다. @Column(nullable = false) @ColumnDefault("0") private Integer rating;하지만 hibernate에선 create-drop일 때만 default 쿼리를 날린다.그렇기 때문에 컬럼에 default 설정이 되지 않..
H2 는 자바로 작성된 RDBMS이다. 자바에서 간단한 테스트 등을 하기 위해 만들어졌다. 주로 스프링 부트와 같은 자바로 개발하는 프레임워크에서 사용한다. Mode In-Memory Mode: 메모리에 디비를 올리는 방식이다. 휘발성이기 때문에 간단한 테스트 등에 사용된다. Embedded Mode: 데이터를 PC에 저장하는 방식이다. 데이터가 비휘발성이기 때문에 개발 초기 단계에 사용된다. Server Mode: 서버를 구축해서 사용하는 방식이다. 테스트 서버로 사용된다. 최근 스프링 부트와 같은 자바를 사용하는 프레임워크에서 H2를 사용할 때 H2를 자동으로 설치해주는 기능이 1.4.x 버전부터 없어졌다. 그래서 H2를 설치하는 방법을 다룬다. 설치 아래 링크로 들어가 가장 최신의 버전을 다운받는다..
윈도우에 OpenJDK17을 설치하기 위해 아래 URL에 접속하여 OpenJDK 17 압축파일을 다운로드 한다. Java Platform, Standard Edition 17 Reference Implementations Java Platform, Standard Edition 17 Reference Implementations The official Reference Implementation for Java SE 17 (JSR 392) is based solely upon open-source code available from the JDK 17 Project in the OpenJDK Community. The binaries are available unde jdk.java.net 다운로드한 파..