JPA
[Jmeter] Jmeter로 메서드 성능 측정하기
getUsers는 다른 서비스 메모리 16gb public List getUsers(List userIds) { List users = new ArrayList(); for (Long userId : userIds) { User user = userRepository.findById(userId) .orElseThrow(() -> new DistoveException(ACCOUNT_NOT_FOUND)); users.add(UserResponse.of(user.getId(), user.getNickname(), user.getProfileImgUrl())); } return users; } for문으로 userRepository를 계속해서 찌르는 것은 비용 낭비가 굉장히 심함 → In절을 찾아보는 것이 어..
[JPA] QueryDSL 이란
QueryDSL QueryDSL 이란 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해주는 프레임워크 SQL, JPQL을 코드로 작성할 수 있게끔 도와주는 오픈소스 빌더 API 사용 목적 String 방식의 쿼리문을 작성할 시 생기는 문법 오류들을 예방해줌 IDE의 코드 자동완성 기능을 사용 동적 쿼리를 만들기 쉽다 리팩토링에 용이하다 -> 코드를 분석하기 용이 의존성 설정 (build.gradle) plugins { id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } dependencies { implementation 'com.querydsl:querydsl-jpa' } def querydslDir = "$buildDir/generat..
[JPA] 테이블 연관관계 매핑 기초
1. 연관관계 매핑 기초 엔티티들은 대부분 다른 엔티티와 연관관계가 있다. 예를 들어 주문 엔티티는 어떤 상품을 주문했는지 알기 위해 상품 엔티티와 연관관계가 있고 상품 엔티티는 카테고리, 재고 등 또 다른 엔티티와 관계가 있다. 그런데 객체는 참조(주소)를 사용해서 관계를 맺고 테이블은 외래 키를 사용해서 관계를 맺는다. 객체 매칭 관계에서 가장 어려운 부분이 바로 객체 연관관계와 테이블 연관관계를 매핑하는 일이다. 방향(Direction) : [단방향, 양방향]이 있다. 예를 들어 회원과 팀이 관계가 있을 때 회원 -> 팀 또는 팀 -> 회원 둘 중 한쪽만 참조하는 것을 단방향 관계라 하고, 회원 -> 팀, 팀 -> 회원 양쪽 모두 서로 참조하는 것을 양방향 관계라 한다. 방향을 객체관계에만 존재하고..
[Spring] JPA 란?
JPA? JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있다. 우선 JPA에 앞서, 먼저 ORM에 대해 알아보도록 하자. ORM(Object-Relational Mapping) 우리가 일반적으로 알고 있는 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻이며, 기술적으로는 애플리케이션의 객체를 RDB 테이블에 자동으로 영속화해 주는 것이라고 보면 된다. 장점 SQL문이 아닌 Method를 통해 DB를 조작할 수 있어..