hamcrest의 hasProperty 프로그래밍

hamcrest의 Generic 타입 체킹은 정말 최악인것 같다.
뭔가 근본적인 설계가 잘못 돼 있는 느낌인걸? 특히 컬렉션 관련 부분이 그렇다.

아무튼, hasProperty()라는 Matcher가 있는데, 객체의 특정 필드값만을 비교 대상으로 지정할고 싶을 때 사용한다.

예를 들면 이런식이다.

List<User> users = new ArrayList<User>();
users.add(new User("이하늬", 20, "예뻐~")); // name, age, description
users.add(new User("김태희", 30, "더 예뻐~"));

assertThat(users, Matchers.<User>hasItem(Matchers.<User>hasProperty("name", is("김태희"))));


users 컬렉션의 객체 중에 "name" 필드의 값이 "김태희"인 객체가 하나라도 있으면 true가 된다. User 객체 전체를 비교하는게 아니라, "name" 필드의 값만 비교하는 것이다.

코드가 상당히 난잡하다는 것을 몸소 느낄 수 있을 것 같다. 하지만 어쨌든 가끔씩 유용하게 사용할 만한 매처이다.
단일 객체 비교시에는 큰 의미가 없어 보이고, 컬렉션에서 특정 필드의 값을 검사할 때 유용할 법하다.

처음에 hasProperty를 소개한 해외 블로그의 경우에는 Generic을 정상적으로 못 쓰고 users 컬렉션을 (Iterable<Object>) 형태로 캐스팅하는 식으로 해결하고 있었다. 어쨌든 내가 보기엔 타입을 Matcher.<User>hasItem(..) 형태로 명시하는게 더 나아 보인다.

hamcrest의 컬렉션 관련 매처들은 이곳 저곳에서 사람 복잡하게 만드는 느낌이다.
- 더 나은 해결책이 있다면 좀 공유해주시면 감사하겠습니다.

더욱 자세한 사항은 http://wiki.kwonnam.pe.kr/java/junit/hamcrest에 정리해두었다.

공유하기 버튼

 
 

Pro JPA 2 - JPA 사용자에게 단비 같은 책 책 이야기

Pro Jpa 2 (1st, Paperback) - 10점
Keith, Mike/Springer-Verlag New York Inc

프로그래밍에서 제일 중요한게 뭘까?

사실상 웹 프로그래머가 가장 많이 하는 일은 데이터를 넣고 보여주고 조작하는 일이다.

웹 프로그래머이니까 웹 자체에 대한 이해도 물론 중요하지만, 그것 보다 프로그래머가는 데이터 저장소를 어떻게 효율적으로 다루느냐를 제일 먼저 공부해야 하지 않을까? 그리고 웹 개발자에게 있어서 가장 기본이 되는 데이터 저장소는 관계형 데이터베이스일 것이고.

우리팀은 JPA를 기본 ORM으로 사용하고 있어서 회사 팀원들에게 Pro JPA 2 책 스터디를 제의했고 얼마전에 끝을 냈다.

이 책은 JPA 사용자들에게 진정 단비와 같다.

JPA의 구석 구석을 훑고 있으며 설명에 모자람이 거의 없다.

이 책을 스터디하면서 영문 서적이라 어려움도 많았지만, 많은 사람들이 "도대체 우리가 이걸 모르고 지금까지 어떻게 개발한거지?" 이런 말이 참 많이도 나왔다.

단, 문제가 있다. 이 책은 기본적으로 EJB 3를 기반으로 설명하고 있다. 따라서 내가 알기로는 EJB 3를 거의 사용안하고 있는 우리나라 환경에서는(현재 추세로 봐서는 EJB 3 사용하는데가 세계적으로도 별로 많을 것 같지는 않다. Spring 3를 쓰겠지) 별로 필요없는 EJB 관련 내용들이 툭툭 튀어 나와서 흐름을 방해한다.

하지만 Spring Bean 의 기본 개념을 알고 있다면 누구나 EJB의 Stateless Session Bean(스프링의 일반 빈, 단 한 번만 객체 생성)과 Statefull Session Bean(스프링의 프로토타입 스코프 빈, 매번 새로 객체 생성)이 뭔지 금방 깨닫고 Spring에 맞춰서 이해할 수 있을 것이다.

부족한 부분으로 Spring관련 설정과 OpenSessionInView 등에 대한 것이 있는데, 이는 Spring Reference를 보면 금방 될 것이다. 또한 Spring Data JPA도 꼭 살펴보길 권한다.

JPA 사용자라면 무조건 읽어야 할 책이다.

이미 본 SQL AntiPatterns책도 그렇고, 나는 앞으로도 RDBMS와 SQL에 관한 공부를 좀 더 깊게 할 예정이다.

공유하기 버튼

 
 

1 2 3 4 5 6 7 8 9 10 다음