"한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다." 이 책으로 디자인패턴을 공부를 처음 시작했는데 가장 좋았던 점은 어떤 패턴인지 직관적으로 설명하는 것이 가장 좋았습니다. 마치 패턴과 내가 대화를 하는듯한 느낌을 주는 느낌을 받았습니다. 이건 여담인데 제가 회사 면접때 디자인 패턴을 공부한적이 있다고 했고 특정 패턴에 대해 설명한적이 있었습니다. 그때 설명한 패턴이 어뎁터 패턴이었습니다. 저는 그 회사에 합격을 해서 지금도 잘 다니고 있습니다. 이것을 갑자기 말한 이유는 아마 제 합격이 가능한것은 이 책의 지분이 어느정도 있다고 생각합니다. 실제로 입사를 했을때 보다 먼저 구입을 하였습니다. 근데 이 책의 가장 큰 단점이 있었는데 그건 바로 너무 책 표지가 올드하다는 점입니다. 제가 이 책을..
Spring data JPA에서는 많은 확장 기능을 제공하고 있다. 사용자 정의 리포지토리 구현 (잡 글) 일반적으로 Spring data JPA에서는 public interface MemberRepository extends JpaRepository {} 인터페이스를 통해서 JPA를 사용하고 있다. 근데 마이바티스 나 네이티브 쿼리를 사용하는 경우 위 인터페이스는 의미가 없어진다. 왜냐하면, JPA에서 이들을 관리할 수 없기 때문이다. 결국 이들을 사용할때 엔티티와 테이블간의 간극이 발생할 수 있다는 건데 이를 해결하는 방안으로는 강제로 영속성 컨텍스트를 초기화를 시켜줘야 가능하다. 그러면 위 인터페이스를 이용하면 어떨까? 결론부터 말하면 굉장히 비효율적이다. 아까도 말했듯이 마이바티스나 네이티브 쿼리..
페이징 기능 JPA에서 페이징을 할려면, public List findByUsernameAndAgeGraterThen(String username, int age) { return em.createQuery("select m from Member m where m.userName =:username and m.age >:age") .setFirstResult(1) .setMaxResults(10) .getResultList(); } 이런식으로 first와 max를 지정해야 할 수 있다. 코드 상에서는 하드코딩으로 박아두고 있지만, 이것을 밖으로 빼면 될거다. 근데 문제 가 있다. 그건 바로 전체값을 알 수 없다는 점이다. 결국 계산해야 된다는 건데 솔직히 말하면 귀찮다. 이것을 spring data JP..
springData에서는 인테페이스를 통해서 쿼리를 작성한다. public interface MemberRepository extends JpaRepository { } 이상하다. 분명히 아무것도 없는데 이렇게만해도 기본적인 insert라던지 delete update가 전부 된다. (update같은 경우는 jpa의 특별한 방법을 사용하고 있다.) @Override public List findAll() { return getQuery(null, Sort.unsorted()).getResultList(); } 요런식으로 미리 구현되어 있다. 그래서 비슷하게 만들려고 했지만, 잘 만들어지지 않았다. 이걸 만드는게 중요한게 아니기 때문에 넘어가자. @Override public T getById(ID id) ..