JPA를 활용한 성능 개선 경험 회고
·
Framework&Tools/Spring
최근 진행했던 프로젝트에서 데이터베이스 성능 문제를 해결하기 위한 여정을 공유해보고자 합니다. 프로젝트 초반에는 마이바티스(MyBatis)를 이용하여 다수의 테이블을 조인하며 데이터를 조회했지만, 성능 문제가 점점 심각해졌습니다. 프로젝트 진행 당시에는 팀원 모두가 JPA를 갑자기 학습할 수도 없으니 추후에 나 혼자 해당문제를 해결 해보자고 생각했습니다. 그래서 이후에, 이 문제를 개선하고자 JPA(Java Persistence API)를 도입했지만, 초반에는 n + 1 문제로 인해 큰 성능 개선을 이루지 못했습니다. 이 글에서는 문제 해결 과정과 그 결과를 상세히 다루어 보겠습니다. 문제 상황: 성능 저하프로젝트 초기에는 MyBatis를 사용하여 복잡한 쿼리를 작성했습니다. 하지만 여러 테이블을 조인하..
Filter, Interceptor, AOP - 차이점과 적절한 사용 상황
·
Framework&Tools/Spring
오늘 학원에서 수업중 AOP라는 내용에 대해 공부하게 되었다. Spring에서 CRUD게시판을 만드는데 있어서 로그인과 회원정보수정, 회원가입 등에서 비밀번호를 암호화(SHA)시켜서 데이터베이스에 저장시키는 과정이 공통적으로 들어가게 되었다. 예를 들면 아래와 같은 코드이다. String hashPw = HashPw.getHash(user.getUserpw()); user.setUserpw(hashPw); 이런식의 공통적으로 들어가게 되는 코드를 줄이고자 AOP라는 것을 사용한다고 하였다. 자, 여기서 우선 AOP란 무엇인가? - 나도 잘모르니 같이 공부하는 셈치고 AI에게 물어보자. AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍) AOP(Aspect-Oriented P..
Spring에서 MyBatis 사용하기: 세팅부터 기본 문법까지
·
Framework&Tools/Spring
MyBatis는 데이터베이스와 자바 객체 간의 매핑을 위한 오픈 소스로, Spring 프레임워크와 함께 사용될 때 강력한 데이터 액세스 계층을 제공한다. 이번 포스팅에서는 Spring 프로젝트에서 MyBatis를 사용하는 방법과 기본 문법을 알아보도록 한다!! 1. 프로젝트 세팅 먼저, Spring 프로젝트에 MyBatis를 통합하기 위해 아래와 같은 의존성을 추가해야 한다. org.mybatis mybatis-spring-boot-starter {MyBatis 버전} 그리고 MyBatis 설정 파일(mybatis-config.xml)과 SQL 매퍼 파일들을 작성할 디렉토리를 생성한다. 2. MyBatis 설정 application.properties 파일에 데이터베이스 연결 정보를 설정한다. sprin..