[인프런 워밍업 클럽 스터디 BE 1기] 두 번째 발자국
두 번째 발자국
배운것들
스프링 컨테이너의 의미와 사용 방법
국비교육에서 이미 스프링 컨테이너에 대해 배웠었기 때문에 어느 정도 알고 있었는데, 강사님의 상세한 강의로 모르고 있었던 개념들과 헷갈렸던 부분들을 확실하게 잡고 갈 수 있었다. 특히 "@bean 어노테이션의 경우 메서드에 사용하고, @Component어노테이션은 클래스에 사용한다" 라는 것만 알고 있었는데, 기존에 이미 사용하고 있었던 어노테이션들도 @Component를 사용한 것이 었다는 것을 알고 더 깊게 이해할 수 있었다.
Spring Data JPA를 사용한 데이터베이스 조작
이제까지 MyBatis만 사용하고 SQLMapping기술만 사용해서 어떻게 sql을 쓰지 않고 DB를 조작할 수 있는지 의문이었는데, 강의를 듣고 JPA에 대해 알아가면서 SQLMapping기술과는 너무 달라서 충격이었다. 단지 JpaRepository를 상속받은 인터페이스를 만든 것 만으로 SQL없이 DB를 조작하는 것을 보고 너무 생소해서 필기하면서 공부하고 복습이 필요하겠다는 것을 느꼈다.
그리고 이제까지 MyBatis처럼 JPA가 하나의 라이브러리인줄 알았는데, JPA는 하나의 규칙이라는 것을 새롭게 알게 됐다. JPA의 구현체 중 하나가 Hibernate이며 이 전체를 쓰기 쉽게 해주는 것이 Spring Data JPA 라이브러리이다. 라는 부분을 들으면서 JPA에 대해 하나도 몰랐구나를 알게 됐다..
트랜잭션과 영속성 컨텍스트
JPA를 사용하면서 가장 흥미로웠던 부분이 Update부분이다. 기존 자료를 수정하기 위해서는 Update 쿼리를 날려줘야하지만 JPA에서는 도메인 내부에서 데이터 수정함수를 만들면 기존 데이터에서 바뀐 데이터를 감지하고 update문을 알아서 날려준다는 것이다. 이 부분이 가능했던 이유가 영속성 컨텍스트 라는 것의 변경감지 기능 덕분이다. 이 외에도 쓰기지연(여러 sql문이 commit될 때 한번에 저장됨/ DB커넥션비용을 절감), 1차 캐싱(ID를 기준으로 엔티티를 기억)등이 있다!
회고
저번주까지는 알고 있던 내용들이었기에 복습하는 과정이었다면, 이번주는 JPA를 다루기 시작하면서 새롭게 배우는 것들이 훨씬 많아졌다. 그중에서도 JPA 직접 다뤄보면서 SQL을 직접 만들어서 쓰던 것과 다르게 신세계를 경험할 수 있었다. 이제까지 따로 필기는 하지 않으면서 과제 정도만 진행했었는데, 배우는 내용이 많아지면서 필기를 하지 않으면 까먹겠다는 생각이 들어 뒤늦게 블로그에 배운 내용들을 올리고 있다. 이번주 금요일에 깜짝 라이브 방송이 있었는데, 까먹고 참여하지 못해서 너무 아쉬웠다. 다음주 금요일은 진짜 꼭 참여해야겠다.
댓글을 작성해보세요.