상황 프로젝트를 진행하면서, 데이터를 자동으로 넣어야하는 상황이 생겼다. History에 있는 유저 정보를 활동정보에 해당 id를 가진 유저에게 한꺼번에 데이터를 저장하는 작업이였다. 처음에 작성한 쿼리는 forEach문으로 각각 save를 돌면서 데이터를 저장하는 것이였다. 해당 작업의 코드리뷰로 save와 saveAll 에 대한 것을 보면 좋을 것 같다는 리뷰를 받았다. 이번기회에 해당 쿼리들이 어떻게 다른지 알아보려고 한다. 처음에 작성한 save() 메소드이다. memberHistories.forEach(memberHistory -> memberActivityRepository.save( memberActivityRepository.save( MemberActivity.builder() .memb..
문제 상황 1000명 정도 되는 유저의 멤버 리스트 조회하는 과정에서 쿼리가 총 2번 나가야하는 상황이 발생했어요. 1. 멤버 정보를 전체 조회하는 쿼리 + 필터링 포함 2. 필터링에 포함되는 멤버를 count하는 쿼리 데이터가 늘어남에 따라서, 쿼리 속도가 늘어나는 것에 부담을 느끼게 되어서 jMeter로 검색 속도 테스트를 진행하기로 하였습니다. jMeter 사용방법 다운 https://jmeter.apache.org/download_jmeter.cgi Apache JMeter - Download Apache JMeter Download Apache JMeter We recommend you use a mirror to download our release builds, but you must ver..
Static : 고정된 객체 생성 없이 사용할 수 있는 필드와 메소드를 생성하고자 할때 사용한다. 공용 데이터에 해당하거나, 인스턴스 필드를 포함하지 않는 메소드를 선언하고자 할때 이용한다. this -> 인스턴스 필드나 메소드는 this 키워드를 사용할 수 있는데, static은 this키워드 사용불가 public class PlusClass { static int num = 10; static int plusMethod(int x, int y) {return x + y;} static int constructor (int x, int y) { this.num = x; // 이렇게 사용X this.plusMethod(); // 사용불가 plusMethod(); // 사용가능 } } //main int ..
Servlet Filter의 필요성 - 서비스 로직에 로그인 확인 여부 코드가 들어감! - 중복되는 코드들 public void addCart(final Long productId, final String token) { final boolean isValid = jwtTokenProvider.valdiateToken(token); if(!isValid) { throw new UnauthroizedTokenException(); } final String email = jwtTokenProvider.getPayload(token); --- 서비스 로직--- } public List getCart(final String token) { final boolean isValid = jwtTokenProvide..