이전

리뷰 (2)

한줄평
평점 분포
  • 리뷰 총점10 50%
  • 리뷰 총점8 50%
  • 리뷰 총점6 0%
  • 리뷰 총점4 0%
  • 리뷰 총점2 0%
연령대별 평균 점수
  • 10대 0.0
  • 20대 0.0
  • 30대 0.0
  • 40대 9.0
  • 50대 0.0

포토/동영상 (1)

리뷰 총점 종이책 구매
테스트 코드로서 좋은 설명을 해주는 책!
"테스트 코드로서 좋은 설명을 해주는 책!" 내용보기
1 ~ 5장까지...spring-data-jpa를 사용했을 때 속도가 느리다는 점의 테스트 내용별로 생각하고 있지 않은 점인데... 그래프 차트로 보여주셔서 좋았다.JUnit 테스트 코드가 잘 만들어져있다.JUnit in Action 저자님 답게 테스트가 잘되어있다. 참고하기 좋다!!~ 7장까지...글자의 인쇄 상태가 깔끔하지가 않은 부분이 몇몇 보였다. 못 볼정도로 심한 것은 아니지만, 약간씩 번진 듯한 글
"테스트 코드로서 좋은 설명을 해주는 책!" 내용보기




1 ~ 5장까지...

spring-data-jpa를 사용했을 때 속도가 느리다는 점의 테스트 내용

별로 생각하고 있지 않은 점인데... 그래프 차트로 보여주셔서 좋았다.


JUnit 테스트 코드가 잘 만들어져있다.

JUnit in Action 저자님 답게 테스트가 잘되어있다. 참고하기 좋다!!



~ 7장까지...

글자의 인쇄 상태가 깔끔하지가 않은 부분이 몇몇 보였다. 못 볼정도로 심한 것은 아니지만, 약간씩 번진 듯한 글씨가 종종 보인다.



~ 11장 까지...

번역 팀분(트렌스메이트)들이 책의 코드를 테스트 해가면서 작업하신 것이 느껴진다!!

역자 주석에 종종 어떤 상황/환경에서는 오류가 있으니 어떻게 하라는 식의 안내가 있어 좋았다.


연관의 예나 트랜젝션 전파에 대해서도 테스트 코드로서 잘 설명을 해주셨음.


12장

나는 테스트 코드 작성시, 엔티티의 ID에 Sequence나 Auto Increment 필드가 들어간 부분에 대해서는 테스트를 복잡하게 한적이 있었다.

Auto Incremtnt 증가 내용을 지우기 위해 테이블은 항상 DROP하는 것으로 하고, 입력 데이터를 sql로 미리넣어서 테스트 하는 식으로 했었는데, 저자님은 TestData를 만들어서 엔티티 저장마다 생성된 ID를 넣어주고 firstId, lastId 정도로만 검사해서하는 식으로 하셨는데, 왠지 간편해보였다. 


13장

13장도 내용이 어렵긴 했는데, CRUD Audit 로깅을 버전 관리처럼 수 있는 Hibernate Envers는 꽤 유용해보였다.


14장

스프링에 JPA나 Hibernate를 통합해보는 장인데, 이 부분은 익숙한 내용이라서 빨리 넘어갔다.

그래도 저자님께서 예제 애플리케이션의 DAO부분 제네릭화 하신 부분은 재미있게 봤다. 


15장

spring-data-jdbc가 상당히 쓸만해보였음. 저자님께서 작성한 테스트 코드 작성 방식이 정리된 느낌에 괜찮아보였다.

  • spring-data-jdbc3 에서는 일대일 관계 설정이 되어있는데, count() 쿼리로만 테스트 하셔서 느낌이 팍~안왔음.  이부분은 findAll을 실행하면 알아서 JOIN 쿼리가 만들어져서 Address가 담아오는 모습을 보여주셔도 좋았을 것 같음.

  • 15장은 쿼리가 어떻게 실행되는지 알 수가 없어서 예제 프로젝트에 log4jdbc를 적용해보았는데, spring-data-jdbc가 실행하는 쿼리와 결과를 자세히 볼 수 있어서 좋았다.

  • Boot 3 프로젝트도 만들어서 한번에 같이 해버렸는데.. 코드 상으로 고칠 것은 거의 없었음.. (패키지명, Hibernate 6 되면서 클래스명 바뀐거 정도.. )

    • 그래도 JDBC 로그를 보았을 때, Spring Data JDBC의 동작 차이가 종종 보였음.  최신 버전이 뭔가 더 최적화된 쿼리를 실행하는 느낌이 듬.


16장

스프링 데이터 REST 활용 장인데... 이번 장도 빨리 넘어감,

저자님께서 REST 요청 파일을 만들어두셔서 REST API 동작 확인하기가 편했음. 

VSCode에서도 REST Client 확장을 설치하면 commands.rest에 정의된 내용을 쉽게 실행할 수 있었다.

그런데.. 

개정판 진행하실 때는 부트에 log4j 구버전 라이브러리를 직접 추가해서 사용하시는 것보단, log4j2 스타터를 사용하시거나, 기본 설정된 logback으로 사용하시는 것이 좋을 것 같다. 



17장

Spring Data MongoDB 활용 장이고, 쿼리 메서드 정의나, MongoTemplate을 이용한 데이터 접근에 대해서도 많은 사례를 들어주셨음.  테스트를 정말 빡시게 하심 ㅎㅎ.

Boot 3로 전환도 크게 문제 없이 단순 어노테이션 변경이나, 특정 메서드 리턴이 바뀐것 말고는 쉽게 전환해버렸다.

  • @PersistenceConstructor -> @PersistenceCreator 

  • mongoTemplate.stream()이 CloseableIterator<T>을 반환하던 것이 Spring Data 3.3.0에서는  Stream<T>를 바로 반환하도록 바뀌었다.

저자님께서 MongoDB를 설치하면서 포함된 Compass를 사용하신 것 같은데...  나는 이미 도커로 사용중인 상태여서, compass만 따로 받았다.


18장

Hibernate OGM을 사용해서 JPA 코드로 MongoDB와 Neo4j를 다룰 수 있는 점을 보여주셨는데, 흥미로웠다.

그러나 Hibernate OGM이 2018년 12월 이후로 개발이 안되고 있는지 버전업이 안되고 있어서, 

사용하게 되진 않을 것 같다.

  • 라이브러리 년식이 되다보니 Java 17 환경에서 수행할 때는 다음 VM옵션을 붙여줘야 UNNAMED 예외 로그가 노출되지 않았다. (surefire 설정과 vscode launch 옵션에 넣어줌.)

    --add-opens=java.base/java.lang=ALL-UNNAMED



19장

Querydsl로 쿼리 만드는 법에 대해 자세히 설명해주셨다. 검증 테스트도 많았다. 

  • querydsl-apt에 classifier를 알맞게 추가해주면 apt-maven-plugin 플러그인 설정은 필요가 없다.... 개정판 내실 때 플러그 인 설정 관련해서는 이제 관련 내용을 제거해주셔도 될 것 같다.

  • 마지막에 Querydsl API는 삽입(INSERT) 기능을 제공하지 않는다고 하셨지만.. Querydsl 5.0.0 기준으로 Hibernate 6과 같이 사용하면 INSERT-VALUES를 할 수 있다. Hibernate 5.x가 지원하지 않는다고 보면 될 것 같음.



20장

테스트 프로필 설정에 대해, 보다 확실하게 알게된 것 같다. 테스트 실행할 때.. 트랜젝션 범위가 어디서부터 어디까지인지 확인해 보는 테스트도 좋았다.

  • h2 DB 1.4.200 버전을 쓰면 예제 오류가 없긴 하지만, 이후 버전을 쓰면 User 테이블을 생성할 수 가 없어서 오류가 난다. 이후 1.4.200 이후 버전부터 예약어가 된 듯..  그래서 테이블 이름 이스케이프 처리를 해야했다.

    @Table(name = "`user`")


부록

  • Maven 설명을 따로 해주셨는데, 중요한 부분과 초심자가 실수할 만한 부분에 대해 잘 짚어주셨다.



[의견]

테이블 이름 생성 규칙에 대해 미리 정의가 되었으면 좋았을 것 같다.

MySQL을 윈도우에 설치한다는 가정으로 진행하셔서, 테이블이나 컬럼 이름에 대해 대소문자 구분을 하지 않았을 때만.. 정상 동작하는 테스트 코드들이 있었다.

요즘은 윈도우 환경에서도 Docker를 써서 MySQL을 사용하는 경우도 많으므로, 이름 규칙을 확실하게 정하는 것이 나을 것 같음.

물론 MySQL 설정을 데이터베이스, 테이블명에 대해 대소문자 구분 안하도록 설정을 하면되긴 하지만.. 그래도 뭔가 정해주는 것이 나을 것 같음.



* ★5를 줬어야하는데 하나 깍은 이유

* 초판 책의 마지막 인덱스 부분에 페이지 인쇄가 누락되어서 3페이지가 백지임...
* 이런 오류면 오탈자 페이지에 올려둔 PDF 파일 보라는 안내로 끝내지 마시고,  최소한 해당 페이지에 사과 메시지라도 적어주시는 것이 좋을 것 같습니다. 이부분에 꽤 맘 상하더라구요.. ㅠㅠ



총평

아직 절반 좀 넘게 보았지만 책 내용은 아주 좋습니다.

저자님이 JUnit in Action책의 저자이셔서 그런지 작성하신 테스트 코드에 대해서도 좋은 참조가 되었습니다.

출판사에서는 앞으로 페이지 누락 사고가 없도록 판매전 QA 검수에 신경을 많이 써주셨으면 합니다.

이후 장들도 더 보게 되면 리뷰 업데이트 할께요.. 감사합니다.

---

이제 다 보았습니다. 

저자님의 상세한 테스트 코드가 매우 도움이 되었고,  책의 설명이나 도식도 매우 좋았습니다.

연관 부분 챕터와 3부 챕터들에서 해깔리던 부분 해소를 위해 필요시 몇 번 더 보면 될 것 같아요.

책 잘 읽었습니다. 감사합니다.


YES마니아 : 골드 s******n 2024.05.10. 신고 공감 2 댓글 0