개발용 데이터베이스 선택하기 일반적으로 많이 사용하는 MySQL이나 Oracle 데이터베이스를 사용해도 되지만 설치비용이 크다. 학습 및 테스트 용도로 많이 사용하는 H2 데이터베이스를 사용하자 H2데이터베이스를 설치 및 서버 모드로 실행한 뒤 http://localhost:8082 웹 콘솔로 접근하여 H2 데이터베이스에 접근이 가능하다. H2 Database http://www.h2database.com/ 최고의 실습용 DB 1.5M로 가볍다. 웹 콘솔을 제공한다. MySQL, Oracle 데이터베이스 시뮬레이션이 가능하다. 시퀀스, AutoIncrement 기능을 지원한다. H2 Database Engine (redirect) H2 Database Engine Welcome to H2, the fre..
서론 현대에 와서 대부분의 자바 애플리케이션들은 관계형 데이터베이스 를 데이터 저장소로 사용한다. 데이터베이스를 활용해서 데이터를 관리하려면 결국 SQL 을 사용해야한다. SQL 을 직접 다룰때 발생하는 문제 반복, 그리고 SQL 의존적인 개발 일반적으로 회원 관련 기능을 만든다고 가정했을때의 간단한 예제를 살펴보자. // 엔티티 클래스 class Member { private String memberId; private String name; } // DAO 클래스 class MemberDAO { private Member find(String memberId) {...} private void save(Member member) {...} } INSERT INTO MEMBER VALUES (...) ..
ParallelStream vs CompletableFuture 기본 적으로 퍼포먼스는 ParallelStream이 좀더 빠르나, CompletableFuture의 ThreadPool을 조정하면 퍼포먼스가 크게 향상됨 ParallelStream java8에서 추가된 병렬처리를 매우 쉽게 해주는 방식 ForkJoinFramework를 이용하여 작업들을 분할하고, 병렬적으로 처리하게 됨 가독성이 매우 좋다. 기본 사용 방법 LongStream.range(0, 1_000_000_000).parallel() .sum(); parallelStream은 개발자 모르게 내부 스레드풀을 만들어 작업을 하지만, Stream별도 스레드 풀을 만드는게 아닌 하나의 스레드 풀을 모든 parallelStream이 공유한다. 장..
JPA를 학습해야 하는 이유 ? SQL 개발의 문제점 CRUD 무의미한 반복적인 노가다.. 자바 객체를 SQL로, SQL을 자바객체로 매핑해주어야 한다.. 사실상 개발자는 SQL Mapper의 역할을 하게 된다. class Member { private String memberId; private String name; private int age; } INSERT INTO MEMBER VALUES (...) 개발 도중 혹은 추후에 Member 테이블에 필드가 추가되면, 모든 쿼리에 수정이 필요하다. SQL 의존적인 개발을 할 수 밖에 없다. 패러다임의 불일치 해결 객체 vs 관계형 데이터베이스 객체지향 프로그래밍은 추상화, 캡슐화, 은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 있는 다양한 장치..