본문 바로가기

💚 Spring

(11)
[JPA] QueryDSL 조회 속도 개선 비교 (전체 성능 65.7% 향상) 프로젝트를 진행하면서 기한을 맞추기 위해 초기의 코드들은 전부 JPA를 사용했다. 근데 기한에 맞추기 위한 코딩을 하다보니 하나의 쿼리를 조회하면 N+1문제로 무수히 많은 쿼리가 생성되었다. 이를 개선하기 위해 팀원들과 의논 후 기간이 한정되어 있기에 조회부분만 QueryDSL을 도입했다. 그 결과 전체 성능이 65.7% 향상되었다. 성능 향상 후 비교했던 기능은 상품 조회, 마이페이지, 채팅방 조회 이렇게 3개의 기능이었다. 해당 포스팅은 어떤 점에서 문제가 발생했으며 최적화 전후의 성능 차이를 비교한다. 성능 문제점초기의 JPA만 사용한 코드는 빠르게 진행하는 데에 도움이 되었지만, 성능 저하를 발생시켰다. 특히 상품 전체 조회, 마이페이지 내 상품 조회, 채팅방 조회 등과 같이 조회 부분에서 두드러..
QueryDSL 2024.07.09.(화) 💡 오늘의 학습 키워드QueryDSL 의존성 추가QueryDSL 사용해보기 QueryDSL 의존성 추가https://github.com/ysy56/JPA-QueryDSL/commit/426b12568779d3a5c0c9aff2ca2b2abdb4a37a77 build : QueryDSL 의존성 추가 · ysy56/JPA-QueryDSL@426b125ysy56 committed Jul 9, 2024github.com QueryDSL 사용해보기https://github.com/ysy56/JPA-QueryDSL/commit/9137ede929c242cacc2c83085870d018fce4fe70 update : JpaQueryFactory 생성 · ysy56/JPA-QueryDSL@..
JPQL과 QueryDSL 2024.06.28.(금) 💡 오늘의 학습 키워드-  JPA 심화 4주차 -ORMRepository vs JpaRepositoryRawJPAEntity 코드 정리CascadeorphanRemovalCascade.REMOVE vs orphanRemovalFetchJpaREpository페이지 반환 타입정렬JPQL- JPA 심화 5주차 -QueryDSL @DynamicInsert & DynamicUpdate  ORM (Object Relation Mapping): 테이블을 하나의 객체(Object)와 대응시켜 버린다. * 탄생 이유QueryMapper의 DB 의존성 및 중복 쿼리 문제로 탄생객체지향(Object)을 관계형 데이터베이스(Relation)에 매핑(Mapping) 한다는 건 정말 많은 난관 * ..
데이터베이스(H2, JDBC 드라이버, Query Mapper)및 MyBatis 💡 오늘의 학습 키워드- AWS의 모든 것(All about AWS) 2주차 -MFA 추가하기- JPA 심화 2주차 : 데이터베이스 다루기 -데이터베이스 생성(H2)트랜잭션데이터베이스 Driver 동작 방식 JDBC 드라이버Statement vs PreparedStatementJDBC Template(Query Mapper) - JPA 심화 3주차 : RawJPA 기본 -MyBatis MFA 추가하기2024.06.27 - [🧡 AWS] - [AWS] MFA 추가하기 feat. 루트 사용자 ( + MFA 코드 2개? ) [AWS] MFA 추가하기 feat. 루트 사용자 ( + MFA 코드 2개? )* 들어가기에 앞서서이제 사용자 추가했으면 MFA라는 것을 추가해야 한다고 하는데..아니 하다가 안되서 왜..
통합 테스트와 Spring AOP(어드바이스, 포인트컷) 2024.06.13.(목) 💡 오늘의 학습 키워드- Spring 심화주차 1주차 -mockito단위 테스트 vs 통합 테스트Security TestMockBean Spring AOP(어드바이스, 포인트컷)  mockito: 단위 테스트를 위해 모의 객체를 생성하고 관리하는 데 사용되는 Java 오픈소스 프레임워크 실제 객체의 동작을 모방하는 모의 객체(Mock Object)를 생성하여 코드의 '특정 부분을 격리'시키고 테스트하기 쉽게 만들어 준다.주로 단일 컴포넌트의 동작을 테스트하는 데 사용되며 클래스 내의 개별 메서드나 함수, 서로 다른 클래스 또는 컴포넌트 간의 상호작용, 객체들 간의 협업 등을 테스트할 수 있다.@MockProductRepository productRepository;@MockF..
단위 테스트란 무엇일까? 2024.06.12.(수) 💡 오늘의 학습 키워드- Spring 심화주차 1주차 -kakao 동의항목 이메일 선택SimpleJpaRepository(save)@DisplayName@Nested@TestMethodOrder & @Order@RepeatedTest@ParameterizedTest & @ValueSourceassert 메소드given - when - then 패턴  kakao 동의항목 이메일 선택Kakao 동의항목에서 이메일을 선택하려고 보니 아래 사진과 같이 '카카오계정(이메일)' 부분이 권한이 없다고 나와있었다... 1. '개인정보 동의항목 심사 신청'을 클릭한다. 2. '비즈 앱 전환'을 클릭한다. 3. '개인 개발자 비즈 앱 전환'을 클릭한다. 4. 그러면 아래와 같이 개인 개발자 비..
Entity 연관 관계 💡 오늘의 학습 키워드- 2주차 -@OneToOne & @JoinColumn@ManyToOne@OneToMan@ManyToManyfetch(@OneToMan & @ManyToOne)영속성 전이orphanRemoval   @OneToOne & @JoinColumn@OneToOne 애너테이션 : 1대 1관계를 맺어주는 역할* mappedBy의 속성 값은 외래키의 주인인 상대 entity의 필드명 (양방향일 때 사용)@JoinColumn(name = "이름") : 외래키 주인 entity에서 활용해야 함* 예시 코드 (더보기 ..Click)더보기* 음식 Entity가 외래 키의 주인인 경우!음식@Entity@Table(name = "food")public class Food { @Id @Gener..
ResponseEntity 및 ExceptionHandler 💡 오늘의 학습 키워드- 개인과제 -ResponseEntityExceptionHandlerSwaggerValidation ResponseEntity: HTTP 요청(Request) 또는 응답(Response)에 해당하는HttpHeader와 HttpBody를 포함하는 클래스 내가 작성한 코드(더보기 ..Click)더보기* CommonResponse.javapackage com.nbcamp.agendaappserver;import lombok.Builder;import lombok.Getter;import lombok.Setter;@Getter@Setter@Builderpublic class CommonResponse { private Integer statusCode; private Strin..