본문 바로가기

AOP3

[JPA] findAll, findAllBy, findAllByIn AOP로 성능 테스트해보기 오늘 회사원 친구와 JPA 이야기를 하다가, 다음과 같은 질문을 받았다. 회사 코드를 보니까, Repository에서 findAll을 한 다음 stream으로 가공하는 코드가 있었다. 그런데 그 코드는, findAllByXXX로 바꾸면 해결되는 간단한 필터 연산 코드였다. findAll vs findAllByXXX의 시간 효율 차이가 얼마나 날까? 듣고 보니 궁금하기도 하고, 이런 걸 테스트해보고 싶어서 직접 코드를 짜봤다. 본 글에서 수행하는 내용은 다음과 같다. AOP로 타이머를 만들어서 서비스에 씌우고, SpringBootTest로 테스트를 실행한다. findAll, findAllBy, findAllByIn 세 가지를 사용할 때 쿼리가 어떻게 나오나 비교해 본다. 각각의 쿼리에 대한 서비스 차원의 .. 2021. 9. 2.
[SpringBoot] AOP를 활용하는 다양한 방법 https://kafcamus.tistory.com/39 [SpringBoot] 관점 지향 프로그래밍(AOP)이란? 이 글은 다음의 목적을 바탕으로 작성되었다. AOP가 무엇인지 알아본다. AOP를 활용하는 방법을 알아본다. AOP란? AOP는 관점 지향 프로그래밍(Aspect-Oriented Programming)의 약자이다. AOP는 횡단 관심사(cr kafcamus.tistory.com 저번 글에서는 다음과 같은 내용을 다루었다. AOP가 무엇인지 알아본다. Spring에서 AOP를 활용하는 방법을 알아본다. 이번 글에서는, 이에 더해 실제 AOP를 활용한 간단한 예시를 작성해보려고 한다. 커스텀 어노테이션을 구현한다. 어노테이션이 있는 메소드 실행 시, AOP를 실행한다. 결과적으로 로깅 로직을 .. 2021. 8. 30.
[SpringBoot] 관점 지향 프로그래밍(AOP)이란? 이 글은 다음의 목적을 바탕으로 작성되었다. AOP가 무엇인지 알아본다. Spring에서 AOP를 활용하는 방법을 알아본다. AOP란? AOP는 관점 지향 프로그래밍(Aspect-Oriented Programming)의 약자이다. AOP는 횡단 관심사(cross-cutting concern)의 분리를 허용해 모듈성을 증가시킨다. 이때 횡단 관심사가 무엇일까? 아래의 그림을 먼저 보자. 우리가 서버를 하나 만들고, 그 안에 여러 가지 로직들을 추가했다고 가정하자. 이때, 각각의 모듈마다 중복되는 로직이 존재한다. 예를 들자면, 로깅 로직 트랜잭션 시작/종료 로직 보안 인증 로직 설령 보안 인증을 해주는 클래스를 모듈로 분리하더라도, 각각의 서비스마다 해당 클래스를 호출하고 사용해줘야 한다. 그렇기 때문에,.. 2021. 8. 30.
반응형