SpringBoot
Springboot Cache 사용기[1]
Springboot Cache 사용기[1]
2022.03.30Cache에 대해서 먼저 알아보자. Cache는 작은 저장공간을 가지지만 빠른 액세스 속도를 특징으로 가지고 있습니다. 따라서 자주 사용되는 데이터를 임시 저장소에 저장해 빠른 응답 속도를 위해서 사용됩니다. [그럼 어떠한 데이터에 Cache를 사용하면 좋을까?] 1. 반복적인 결과를 돌려주는 데이터(웹툰은 원고를 수정을 하지 않는 이상 같은 데이터를 반환한다.) 2. 조회하는데 많은 비용이 드는 데이터 [Local Cache와 Global Cache] Local Cache의 특징 1. 서버마다 Cache를 두는 것 2. 서버마다 작동하므로 동작이 빠르다. 3. 다른 서버와의 동기화에 어려움이 있을 수 있다. Global Cache의 특징 1. Cache 서버를 별도로 존재하고, 분산된 서버에서 데이터를..
Spring-Data-JPA [5] Fetch Join
Spring-Data-JPA [5] Fetch Join
2022.03.24JPA를 사용하며, Fetch Join에 대한 이야기를 많이 들어봤습니다. 이번엔 FetchJoin에 대해서 알아보겠습니다. 1. Fetch Join이란? Fetch Join은 JPQL에서 성능 최적화를 위해서 사용하는 기능입니다. 이것은 SQL의 조인 종류가 아닙니다. (SQL 조인에는 Inner Join, Outer Join(left, right, full)이 있습니다.) 어떤 상황에 성능 최적화를 진행하는가?? -> JPA에는 엔티티에 관계를 맵핑할 때 지연 로딩과 즉시 로딩 설정을 할 수 있습니다. 즉시 로딩 -> 어떠한 엔티티가 조회되었을 때 연관된 엔티티도 모두 함께 조회 지연 로딩 -> 어떠한 엔티티가 조회되었을 때 연관된 엔티티는 Proxy로 들어가게 되고, 실제로 사용될 때 DB에서 조회..
Spring-data-JPA [4] Update와 @Query
Spring-data-JPA [4] Update와 @Query
2022.03.231. @Query Repository의 메서드 위에 선엄함으로써 sql 쿼리를 작성할 수 있습니다. 명명법으로 해결하기 힘든 쿼리를 사용할 때 유용합니다. 1-1. 기본 사용법 메서드 위에 @Query(sql)을 해주시면 됩니다. @Query("select m from Member m") List findMemberBy(); @Query 안에 들어가는 테이블은 별칭을 부여해서 사용할 수 있습니다. Member 객체를 m이라는 별칭을 이용했습니다. @Test @DisplayName("@Query 사용 basic") void selectAll(){ List members = createMember(); for(Member member: members){ memberRepository.save(member);..
Spring-data-JPA [3] 명명법
Spring-data-JPA [3] 명명법
2022.03.22Springboot-Data-JPA 명명법 JPA는 반복적인 SQL 작성과 객체를 SQL에 맵핑하는 것을 대신 수행해줍니다. 따라서 개발자는 JPA를 통해서 단순 코드 작성, 맵핑하는 것에 초점을 두지 않고, 비즈니스 개발에 집중할 수 있게 되었습니다. 그중에서 SQL을 직접 작성하지 않고 메서드의 명명으로 쿼리를 사용할 수 있게 해주는 명명법에 대해서 알아보겠습니다. 명명법이 동작하는 원리도 포스팅하려 했지만, Hibernate 구현체에 디버깅 걸어도 보고 구글링도 했지만 찾지 못했습니다.. 추후에 찾게 된다면 동작 원리에 대해서도 포스팅 하겠습니다. 2022.04.10 추가 명명법의 동작 과정을 살펴보겠습니다. 사용된 query는 아래와 같습니다. Optional findByName(String na..
Springboot Test 코드 작성
Springboot Test 코드 작성
2022.03.18Test 코드를 작성하는 법을 알아보기 전에 Test 코드의 필요성에 대해서 알아보겠습니다. 1. 왜 Test 코드를 작성하는가? 크게 2가지 이유가 있습니다.' 1-1. Test 코드를 작성하지 않고 결과를 검증하는 과정은 비용이 많이 든다. Test코드 사용 X (싱글 애플리케이션 (Monolithic Arichitecture)에서의 모습) 검증 코드 작성 애플리케이션 실행 PostMan 혹은 브라우저 Request 요청 log 혹은 print로 결과 검증 원하지 않는 결과 발생 시 애플리케이션 종료 다시 코드 작성 위와 같은 로테이션이 원하는 결과를 얻을 때까지 돌아가게 됩니다. 간단한 애플리케이션이라도 실행하고 종료하는데 비용이 많이 듭니다. 하지만 Test 코드를 작성한다면 이야기가 달라집니다...
Springboot MVC 파헤치기(9) ViewResolver, HttpMessageConverters
Springboot MVC 파헤치기(9) ViewResolver, HttpMessageConverters
2022.03.16ViewResolver란? 사용자가 요청한 정보를 랜더링(html을 만드는 과정)하는 역할을 합니다. BeanNameViewResolver의 경우 DispatcherServlet 내에서 랜더링이 render()로 진행되고, InternalResourceViewResolver는 InternalResourceView의 forward()를 통해서 진행됩니다. Springboot는 container를 초기화할 때 InternalResoureceViewResolver와 BeanNameViewResolver를 bean으로 자동 등록합니다. BeanNameViewResolver은 bean이름으로 찾아서 반환하고, InternalResourceViewResolver는 JSP를 사용할 때 사용됩니다. 별도로 Resolv..