전체 글196 [8/29 TIS] 나의 리팩토링일지 - 객체가 알아야 할 것은 무엇인가? pr link : https://github.com/codestates-seb/seb44_main_002/pull/456 refactor : 불필요하게 전달되던 변수 제거 by jkroh1995 · Pull Request #456 · codestates-seb/seb44_main_002 github.com 현재 프로젝트의 계층 구조는 아래 그림과 같이 되어있다. Controller Layer Cocktail Controller Service Layer Cocktail Service Cocktail Query Service, Cockatil Command Service, Cocktail Converter 이번 리팩토링에서는 Cocktail Service와 Cocktail Converter를 주로 손봤다. .. 2023. 8. 29. [8/25 TIS] N+1 문제 찾아나서기 메인 프로젝트를 고도화 및 리팩토링하는 과정에서, 프로젝트 진행 당시에는 N+1 문제를 신경쓰지 못했기 때문에, N+1 문제를 찾아나서기 위해 전체적으로 서비스를 직접 이용해보며 실행되는 쿼리들을 살펴보고자 하였다(사실 N+1문제가 발생하기를 내심 기대했다, 나도 N+1문제를 해결해보는 과정을 좀 겪으면서 왜 생기는지, 어떻게 해결하는지를 스스로 체득하고 싶었다). 모든 테스트의 시발점인 칵테일 레시피 조회 동작을 수행하기 위해 전체 카테고리에 들어갔을 때부터, 실행되는 쿼리의 상태가 조금 이상해보였다. 카테고리 페이지에 들어가면 여러 개의 칵테일을 동시에 조회한다. 그런데 실행되는 쿼리문은 동시에 사용자 정보를 무수하게 조회하고 있었다. Hibernate: select cocktail0_.cocktai.. 2023. 8. 25. 나는 왜 테스트 코드 작성을 어려워 했는가? 테스트 코드를 작성하는 것의 중요도는 여러 자료들에서 찾아볼 수 있다. 나 역시 개인적으로 테스트 코드를 왜 작성해야하는지, TDD를 공부해야 하는 이유는 무엇인지에 대해 생각했던 경험이 있다. 최근에는 테스트 코드 작성에 어려움을 겪어 이동욱님의 블로그 글들을 참고하기도 하고, 인프랩이나 카카오의 기술 블로그 글 들을 읽어보았다. 그리고 여러 글들을 참고하고 영상들을 본 끝에, 내가 왜 테스트 코드를 작성하는데 어려움을 겪고 있었는지를 어렴풋이나마 이해할 수 있게 되었고, 이를 위해 기록하고자 한다. 나의 이해를 가장 크게 도운 자료는 권용근님의 스프링캠프 - 무엇을 테스트 할 것인가? 어떻게 테스트 할 것인가? 발표 영상이었다. 테스트 코드를 작성하면서 내가 겪었던 가장 큰 어려움은 '이렇게 짤거면 .. 2023. 8. 23. 03. 영속성 관리 영속성 컨텍스트 - 영속성 컨텍스트란? 엔티티를 영구 저장하는 환경이라고 이해할 수 있다. 엔티티 매니저를 통해 엔티티를 저장 / 조회하는 경우 엔티티 매니저는 엔티티를 영속성 컨텍스트에 보관하고 관리한다. 엔티티에는 네 가지 생명주기(라이프 사이클)가 존재한다. 해당 내용은 링크에서 자세히 설명하고 있다. - 영속성 컨텍스트의 특징 id값으로 영속 객체를 구분하기 때문에 id값이 반드시 필요하다. id값이 없다면 예외가 발생한다. 영속성 컨텍스트에 저장된 영속 객체는 트랜잭션이 커밋되는 순간 DB에 저장된다. 영속성 컨텍스트 내부에는 1차 캐시라고 불리는 캐시가 존재한다. 영속 객체는 모두 이 캐시에 저장된다. 조회 쿼리를 실행할 때 만일 조회하고자 하는 객체가 1차 캐시 내에 존재한다면, DB에서 별.. 2023. 8. 18. 01. JPA 소개 JPA란? - ORM JPA에 대해 알아보기 전에 먼저 ORM에 대해 알아보아야 한다. ORM(Object-Realational Mapping)은 객체 - 관계형DB간 매핑을 의미한다. 즉, 우리가 자바 코드로 작성하는 객체와 실제 데이터베이스에서 사용되는 테이블을 매핑한다는 의미이다. 후술하겠지만, ORM 기술을 사용하는 이유는 객체 모델과 데이터베이스 모델 간의 패러다임 불일치를 해결하기 위함이다. 기존에는 패러다임 불일치를 해결하기 위해 개발자가 직접 모든 SQL을 작성하는 수고가 필요했지만, ORM 기술을 사용하면 이러한 비용을 줄일 수 있다. - JPA JPA는 자바 진영의 ORM 기술에 대한 API 표준 명세다. 다시 말해, ORM기술을 사용하기 위한 인터페이스를 모아둔 것이다. 즉, JPA를.. 2023. 8. 15. 0장. 들어가며 해당 카테고리는 김영한님의 '자바 ORM 표준 JPA 프로그래밍' 도서를 학습한 내용을 정리합니다. 프로젝트를 진행하며 가장 크게 느낀 점은 '나는 JPA를 전혀 이해하지 못하고 사용하고 있다.' 라는 점이었다. JPA가 어떤 원리로 JAVA언어와 데이터베이스를 매핑하는지를 모르니, 성능 개선 방법이나 여러 쿼리를 복합적으로 사용해야 하는 경우에는 이를 이용하기 어려웠다. 따라서, 이번 기회에 JPA 서적의 스테디 셀러인 김영한님의 해당 저서를 읽고 JPA에 대해 학습하고자 한다. 학습 과정에서 현재 TDD로 구현하는 프로젝트에 학습한 내용을 직접 적용하고 작성할 예정이다. 2023. 8. 7. 이전 1 ··· 14 15 16 17 18 19 20 ··· 33 다음 반응형