Devlopment

    Rx-Java와 Java8에서의 반응형 프로그래밍 (Reactive Programming in Java 8 with Rx-Java)

    Rx-Java와 Java8에서의 반응형 프로그래밍 (Reactive Programming in Java 8 with Rx-Java)

    SlideShare에 올라온 "Reactive Programming in Java 8 with Rx-Java"[1]에 대해 일부 정리한 글입니다. - Rx-Java와 Java8에서의 반응형 프로그래밍 (Rx-Java와 Java8에서의 반응형 프로그래밍) - 1. 왜 또 다른 프로그래밍 패러다임인가?상황이 지금은 다르다.기존의 소프트웨어 응용 프로그램은 현대 기업의 요구를 충족 할 수 없습니다.우리의 소프트웨어 아키텍처 패턴 및 프로그래밍 기술에 대해 다시 생각해 볼 시간이다. 2. 반응형(Reactive)이란 실제로 무엇을 의미하는가? 자극에 대해 쉽게 반응하는 것- merriam-webster - 반응형 시스템(Reactive Systems)적시에 응답실패할 경우에도 응답을 유지다양한 작업 부하에도 응..

    Jackson에서 null string 안 보이게 설정

    아래와 같이 사용을 하려했지만 Deprecated 되었다. @JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT) 찾아보니 2. 대에서 사용법이 바뀐듯한데아래와 같이 사용을 하면 된다. mapper.setSerializationInclusion(Include.NON_NULL); 또는 @JsonInclude(Include.NON_NULL) class Foo { String bar; }

    DDD와 JPA에 대해서 알아야 하는 이유

    웹 기술에 JPA 표준기술과 그 구현체인 하어버네이트가 있다.그리고 DDD(Domain driven design) 도메인 주도 설계가 있다. DDD나 JPA에 대해서 모른다고 해도 개발하고 구현을 하는데는 아무런 문제가 없다.내 대부분의 경력 또한 두가지를 모르고 개발을 해왔고, DDD와 JPA에 대해서 잘 알고 있는 사람도 많지 않다. 그리고 이런 부분에 대해서 좋게 평가를 해주는 관리자도 많지 않으며, 어떤 관리자는 왜 팀원들이 모르는 JPA기술을 혼자만 사용했냐고 할지도 모른다.어떤 관리자는 왜 기존의 설계와 다른 DDD라는 방식을 썼냐고 반문할지도 모른다. 가끔 나 스스로도 생각을 한다.왜 JPA를 사용하려 하는걸까? iBatis와 myBatis로도 충분히 개발이 되는데?왜 DDD를 사용하려 하는..

    JPA Hibernate 사용 중 ORA-00001: 무결성 제약 조건( ORA-00001 에러

    개발 도중 이상한 에러와 직면했다.분명 무결성 제약 조건에 걸릴 일이 없는데 자꾸 무결성 제약 조건 에러가 나는 것이었다.별거 아닌데, 1시간을 넘게 에러를 찾게 되었고, 결과는 역시 JPA에 대한 사용 미숙이었다. Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 무결성 제약 조건(***.*****)에 위배됩니다 Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement org.springframework.dao.DataIntegrityViolationException: could not execute statemen..

    Spring에서 기본적인 component-scan 설정

    Spring에서 자주 하는 component-scan에 대한 설정이다.이것을 왜 하는지 모르는 사람도 많이 보았다. servlet-context에 전체 스캔을 다 해버리고 한 곳에서 잘 되는데 왜 이것을 이렇게 설정을 해두었냐는 사람도 보았다. (물론 그렇게 해도 동작은 잘 하지만..... )서블릿과 애플리케이션에 대한 분리는 인터넷이나 책에서 찾아서 공부를 하길 권장한다. ([1] 참조) 아래 xml을 보면 중요한 점은 디폴트 필터의 적용 여부와 include, exclude에 대한 차이이다.디폴트 필터는 기본적으로 true인데, true일 경우 Repository, Component, Service, Controller등에 대한 모든 annotation에 대한 객체를 생성해버린다. 그래서 servle..

    Spring에서 Pageable, Valid 설정 유의 설정

    Spring에서 Pageable 사용시 필요한 xml 설정스프링에서 Pageable을 사용하려면 아래와 같은 세팅을 해야 한다.Pageable에 대한 구현 리졸버와 정렬 리졸버에 대한 세팅을 해야 한다.그리고 여러 리졸버 사용시 DomainClassConverter와 conversionService가 필요하다.([1] 참조) 그리고 나와 같은 경우, 하단 설정을 하기 전에 이미 annotation-driven에 대한 설정이 xml 상단에 이미 되어 있었는데해당 설정을 지우지 않고 아래와 같이 설정을 했더니 아래 설정이 적용이 되지 않아서 한참을 고생했다.이미 annotation-driven 설정이 있다면 하단 설정을 지우고 해야만 한다. @Valid 설정에 대한 문제하단과 같이 "annotation-dr..

    QueryDSL

    Reference[1] QueryDSL (http://www.querydsl.com/static/querydsl/3.6.3/reference/ko-KR/html_single/#d0e1861)[2] queryDSL & Spring Data JPA (http://netframework.tistory.com/380)[3] 권남 (http://kwonnam.pe.kr/wiki/java/querydsl)

    Hibernate Dialect (ORA-00933 Pagable error)

    Hibernate를 사용하다가 ORA-00933이 발생하였다.Pagable에 대한 처리를 해야 하는데 오라클인데 쿼리에 "limit"와 "offset"을 사용하여서잘못된 쿼리를 만들어서 발생을 하게 된 것이었다. 처음에는 하이버네이트 왜 이러지 싶었고, Spring Data JPA의 문제인가오라클에서는 제대로 처리를 못 하나 싶은 생각이 들었지만역시나 나의 설정 문제였다. org.hibernate.dialect.Oracle10gDialect 오라클 방언 설정을 해야 하는데 H2Dialect를 사용했다가 발생한 문제였다.오라클 방언으로 설정 변경 후 제대로 동작한다. Diacect의 종류는 다음과 같다. RDBMS Dialect PostgreSQL org.hibernate.dialect.PostgreSQL..

    함수형 프로그래밍이 주목받는 이유

    .함수형 프로그래밍이 주목받는 배경과 장점에 대해서 Refreence [1][2]를 참조해서 요약을 해보았습니다. 배경무어의 법칙이 깨지고 멀티코어 CPU의 등장* 컴퓨터에서 사용하는 반도체 회로 성능은 대략 18개월마다 2배로 빨라진다는 법칙* 2000년대 중반부터 법칙이 깨짐* 물리적인 한계에 부딪힌 CPU 회사들은 여러 개의 칩이 병렬적으로 동작을 하도록 만드는 수평적 전략을 채택 프로그래밍 환경의 변화* 단일코어 환경 : “멀티쓰레딩” 코드는 여러 개의 쓰레드가 하나의 CPU를 가장 효율적인 방식으로 공유하도록 만드는데 초점을 기울임* 멀티코어 환경 : “멀티쓰레드” 코드는 이제 어플리케이션이 동작하는 동안 놀고 있는 CPU가 없도록 만드는데 초점을 기울임 동시성 코드 작성의 어려움* 브라이언 괴..

    JPA, Hibernate 속성 정리

    데이터베이스 스키마 자동 생성hibernate.hbm2ddl.autocreate: 기존테이블 삭제 후 다시 생성 (DROP + CREATE)create-drop: create와 같으나 종료시점에 테이블 DROPupdate: 변경분만 반영(운영DB에는 사용하면 안됨)validate: 엔티티와 테이블이 정상 매핑되었는지만 확인none: 사용하지 않음매핑 어노테이션@Columnname: 필드와 매핑할 테이블의 컬럼 이름insertable, updatable: 읽기 전용nullable: null 허용여부 결정, DDL 생성시 사용unique: 유니크 제약 조건, DDL 생성시 사용columnDefinition, length, precision, scale (DDL)@Temporal 날짜 타입 매핑@Temporal..