[쉽게 따라하는 자바 웹 개발] 193페이지 수정합니다.

193페이지 코드가 엉망이었네요… 죄송합니다. 제 원래 원고에 있는 본문은 다음과 같습니다. 제가 최종 리뷰를 제대로 못했네요. 죄송합니다.

 

서비스에는 별다른 비즈니스 로직이 없기 때문에, 단순히 DAO로 위임합니다. MemberDao에도 listByName 이라는 기능이 없으니 MemberDao에 다음 코드를 추가합니다.

List<Member> listByName(String name);

마지막으로 MemberDaoHibernate에 listByName을 다음과 같이 하이버네이트 Criteria를 사용해서 구현할 수 있습니다.

@SuppressWarnings(“unchecked”)

public List<Member> listByName(String name) {

return getCriteria()

.add(Restrictions.like(“name”, name, MatchMode.ANYWHERE))

.list();

}

Restrictions.like() 메서드를 사용해서 구현했습니다.

[쉽게 따라하는 자바 웹 개발] AS 1. 메이븐 관련 이슈 정리

(전체 화면에 720hd 화질 선택하시면 코드까지 잘 보이실 겁니다.)

첫번째 애프터 서비스로 프로젝트 import시 발생하는 메이븐 관련 이슈 원인과 그 해결책을 설명한 동영상을 올렸습니다.

먼저, 메이븐 의존성을 제대로 못가져오는 문제인데요. 이 문제로 두분이 봄싹 그룹스에 질문을 올려주셨습니다.

jkee님: https://groups.google.com/forum/?fromgroups=#!topic/springsprout/KMkA8iGUtkQ

chicken-hit님: https://groups.google.com/forum/?fromgroups=#!topic/springsprout/EmBvNPe3nUY

이 두분은 프로젝트를 import 하고나서 메이븐 프로젝트를 빌드하는 과정 중에 Update Maven Dependencies라는 과정이 있는데.. 그 때 필요한 의존성을 받아오다가.. 네트워크 상황이 안좋거나, 메이븐 중앙 저장소가 바쁘거나해서.. 필요로하는 의존성을 못가져온 경우입니다.

이때 의존성을 못가져오는 경우가 두가지가 있는데..

  • 완전히 jar 파일 자체를 못가져온 경우.
  • 또는 jar파일을 가져오다가 중간에 멈춘 경우.

첫 번째 경우라면 메이븐 의존성을 다시 업데이트 하도록 Maven -> Project Update(이전에는 Update Dependencies라는 메뉴가 있었는데 이걸로 대체되었나봅니다.)를 실행하면 받아오실 수 있는데요. 두번째 경우라면 그렇게 해도 다시 받아오지 않을수 있습니다. 따라서 그럴 떄는 로컬 메이븐 저장소(보통 유저 홈디렉토리/.m2/repository)에서 해당 의존성 디렉토리를 삭제하시고 다시 프로젝트 업데이트나 아에 프로젝트를 삭제하고 추가하면 메이븐 의존성을 제대로 받아올 수 있습니다만.. 백프로 확신을 못하는거죠. 그때 다시 받아올 때 또다시 네트워크 상황이 좋치 않거나, 메이븐 중앙 저장소가 바쁘면.. 같은 일이 재발할 수 있습니다.

그래서 최후의 수단으로는 로컬 메이븐 저장소에 직접 JAR 파일들을 경로에 맞춰서 넣어주시는건데요. 그건 방금 제 로컬 저장소를 압축한 repository.zip 파일을 받아서 여러분의 로컬 저장소에 덮어써 주시는 겁니다.

http://whiteship.me/book/repository.zip

이 파일을 받으셔서 여러분의 홈 디렉토리/.m2/repository에 복사해 넣으신 다음에 프로젝트 import를 다시 해보세요. 그럼 메이븐 관련 문제는 잘 해결될 겁니다.

신순웅님: https://groups.google.com/forum/?fromgroups=#!topic/springsprout/QrvoPfpE7pM

신숭웅님의 이슈는 처음에 제가 잘못보고 이것도 메이븐 의존성 관련 이슈인줄로 착각했습니다. 그런데 다시 로그를 보니까 이건 메이븐 의존성 문제가 아니라 메이븐 빌드를 실행할때 실행할 goal을 아무것도 적지 않았을 때 발생하는 로그였습니다.

그래서 이건 이슈가 아니라.. 지금 뭔가 빌드를 잘못실행하고 계신걸로 추정이되고요. 무얼 하셨을 때.. 제 책의 어느 부분을 따라하고 계실때 발생한 에러인지 조금 더 전후 상황 정보가 필요한 상황입니다.

어쨌든 지금 저 로그는 제가 방금 동영상에서도 설명드렸지만, 메이블 빌드를 아무런 goal없이 실행할 때 발생하는 로그로… 문제 상황은 아니고, 단순히 메이븐 빌드를 잘못 사용하고 계신걸로 추정됩니다.

부디 제 책을 읽고 계신분들이 무사히 제 책을 즈려밟고 올라서시기를 기원하며 그럼 이것으로 첫번째 애프터 서비스를 마치겠습니다.

제 책을 보시다가 궁금하시거나 개선하면 좋을 부분들은 계속해서 봄싹 그룹스에 의견을 남겨주시면 저 말고도 다른 분들의 의견이나 도움도 받으실 수 있으니까요. 어려워 마시고 편하게 글 남겨주세요.

감사합니다.

내 책 나왔다. ‘쉽게 따라하는 자바 웹 개발’ 회고1: 책자랑

http://www.yes24.com/24/goods/8069226

거의 2년 걸렸네. 2년 넘게 걸렸나.. 모르겠네… @_@.

우선 아쉬운것부터 말하자면, 표지가 맘에 안든다. 이 책은 초보를 위한 책으로 좀 더 쉽고 친근한 이미지가 어울리다고 어필했었지만, 이미 늦었다. 나의 불찰이 크다. 처음 출판사 사장님에게 전화가 왔을 때 ‘실제로 보면 험악하지 않다.’라고 하셔서 ‘넵..’이라고 한 것이 화근이 되어, 이대로 진행이 되버렸다. 나중에 도무지 표지가 맘에 안든다고 어필했을 때는 이미 DVD 출력까지 진행된 상황이라 되돌릴 수 없었다. 다음부턴 맘에 안든다고 좀 더 확고하게 표현해야겠는데.. 다음에 언제 또 책을 쓸 수 있을까 싶다. ㅋㅋ

무엇보다 이 책은 충분한 리뷰어와 리뷰 기간을 거쳤다. 반정도 썼을 때 봄싹 커뮤니티에서 알파 리더를 모집해서 내용을 수정하며 초본을 완성했다. 정말 다행이었다. 그 당시 초벌 원고는 정말 못봐줄 수준이었는데 알파 리더 분들의 따뜻하고 성실한 조언으로 내용을 많이 다듬을 수 있었다. 그렇게 완성된 초본을 들고 조금 더 이 책의 독자에 어울리는 분들께 베타 리뷰를 부탁했다. 그러면서 부족한 내용을 채워넣고, 불필요한 부분은 제거했다. 그렇게 해서 들어간 부분이 ‘JSP to Spring’과 ‘JDBC to iBatis’다. 그리고 마지막 장 하이버네이트의 컨셉을 ‘iBatis to Hibernate’로 잡아서 진행했다. 지금봐도 이런 흐름이나 컨셉이 참 맘에든다. 그렇게 고치는데는 모든 베타리더 분들이 조언을 아끼지 않으셨지만 특히 최윤석군에게 다시한번 고맙다고 말하고 싶다.

자칫하면 감사 인사로 샐 수 있지만, 사실 감사 인사는 책에 써두었으니까 그부분을 참고하시길 바라고. 지금은 내 책 자랑만 조금 더 해야겠다.ㅋㅋ 이 책엔 동영상 강의 DVD가 수록되어 있다. 이론적인 내용은 동영상보다 차분하게 책에 적힌 글을 읽어보는게 더 쉽고 자신의 속도에 맞춰 이해할 수 있지만, 책에 들어있는 실습 부분은 정말 글로 설명하기 힘든 부분도 있었다. 그런 부분을 위주로 동영상을 찍었다. 힘든 일이었다. 후아.. iMac에 16G 메모리를 맞춰넣지 않았으면 30분짜리 영상을 mov파일로 축출하지 못할뻔했다.

마지막으로 이클립스와 메이븐은 박재성님의 조언을, 스프링은 이일민님의 조언을, 아이바티스는 이동국님의 조언을, 하이버네이트에는 조영호님의 초보자를 위한 조언을 실었다. 이분들 모두 유명하고 실력이 넘치는 전문가이신데, 나의 뜬금없고 아무런 보답없는 부탁에도 흔쾌히 OK해주셨다. 내 책을 보시는 분들을 대상으로 해당 주제를 어떻게 학습해 나가는게 좋을지 조언을 아끼지 않으셨으니 꼭 내 책에서 읽어보셨으면 좋겠다.