JPA에 대해 다시 한 번 돌아보자! JPA를 학습한지 어언 한달이 지났다. 하지만, JPA를 이해하고 설명하는 것이 너무나도 어렵게 느껴진다. 따라서, JPA에 대해서 심도 있게 다뤄보며 JPA가 결과적으로 추구하는 목적과 JPA를 활용하는 방법에 대해서 고민해보려고 한다. Java Persistence API 기술의 이름에는 해당 기술이 최종적으로 추구하는 목표를 나타내거나 그 기술의 대표적인 특징을 나타낸다. JPA는 영속성을 가지는 자바 애플리 케이션이다. 즉, JPA는 인메모리에 저장하여 종료하면 사라지는 데이터가 아닌, 종료가 되어도 계속해서 저장되어 있는 데이터이다. JPA는 기술 명세서다. JPA에 대해 정확한 개념을 잡기 위해 블로그를 찾아보던 중 내가 가지고 있는 고민을 말끔하게 씻어주..
Spring Data JPA에서 save() 메서드의 쓰임 불현듯 save() 메서드는 어떤 원리로 쓰이는 건지 궁금해졌다. repository.save(member)는 어떤 원리로 멤버를 담게되는 것인가?! 우리는 save() 메서드가 Repository에 엔티티를 추가하는 메서드로 알고 있었다. 하지만 save()는 업데이트를 위한 용도로도 사용된다. id가 없는 객체의 경우 Transient 상태에서 save될 경우 Persistent 상태가 된다. 이 때 save()의 매개변수 객체는 EntityManager에 캐싱된다. 그러나 id를 갖고 있는 경우 EntityManager가 merge()를 호출한다.
체크 예외(Checked Exception)와 언체크 예외(Unchecked Exception) 체크 예외는 발생한 예외를 catch해서 체크한 후, 해당 예외를 복구 또는 회피하는 등, 어떤 구체적인 처리를 해야 하는 예외를 뜻한다. ex) ClassNotFoundException 언체크 예외는 예외를 catch하여 해당 예외에 대한 어떤 처리를 할 필요가 없는 예외를 뜻한다. ex) NullPointerException, ArrayIndexOutOfBoundsException
간혹 Build 중에 responseDto에 No found라는 에러가 발생하는데 이는 빌드할 때 @Builder @Getter @Setter @NoArgsConstructor @AllArgsConstructor 애너테이션인 입력이 안되어있어서 그렇다. 애너테이션 입력 후에는 오류가 생기지 않는다.