Free Lines Arrow
본문 바로가기
728x90

DataBase60

[JPA] JPA의 설정 옵션들 JPA 의 옵션들을 살펴보자 JPA 옵션들은 운영과 개발하는데 있어 상당히 중요하다. 그렇기 때문에 어떤 옵션들이 있는지 알고 가는것이 중요하다. yaml 파일 기준으로 작성한다. 1. 데이터 베이스 스키마 자동생성 옵션 yaml 파일에 다음과 같이 옵션 지정 spring: jpa: hibernate: ddl-auto: 옵션지정 Create 기존 @Entity 가 붙어있는 테이블들을 Drop 한뒤 다시 생성한다. 운영 DB에 사용하면 망한다. 1. Hibernate: // drop drop table table_name if exists 2. Hibernate: // create create table table_name ( ..., ..., ... ) Create-Drop create 와 동일하나 어플.. 2022. 1. 26.
[JPA] JPQL Named 쿼리 Named 쿼리 엔티티에 어노테이션으로 쿼리를 등록하여 단축어로 쓸수 있다. 미리 정의 한 후 이름을 부여해두고 사용한다. 정적쿼리이다. 어노테이션, XML 에 정의 할수 있다. - XML 이 우선순위가 더 높다. 장점 어플리케이션 로딩 시점에 초기화 후 재사용 - 로딩시 파싱하여 캐싱하고 있다. 애플리케이션 로딩 시점에 쿼리를 검증 - 실행하는 시점에 쿼리에 에러가 있으면 에러를 발생시킨다. 예제 member class @Entity @NamedQuery( name = "Member.findByUsername", query = "select m from Member m where m.username = :username_ public class Member { ... } 사용부분 List resultL.. 2021. 9. 28.
[JPA] JPQL 엔티티 직접 사용 JPQL 엔티티 직접 사용 엔티티를 JPQL 에서 직접 사용하면 어떻게 될까? 엔티티 기본 키값을 사용한다. 예제1 JQPL 다음 두개는 동일한 결과를 가져온다. select count(m.id) from Member m select count(m) from Member m SQL 실제 수행되는 쿼리는 동일하다. select count(m.id) as cnt from Member m 예제2 엔티티를 파라미터로 전달 String jpql = "select m from Member m where m = :member"; List resultList = em.createQuery(jpql) .setParameter("member" member) .getResultList(); 식별자를 직접 전달 String .. 2021. 9. 28.
[JPA] JPQL Fetch Join Fetch Join 실무에서 너무 중요한 개념이기 때문에 반드시 잘 알아둬야 한다. SQL 조인과는 다른개념이다. JPQL 에서 성능 최적화를 위해 제공해 주는 기능이다. join fetch 를 써준다. 어떻게 성능최적화가 될까? JPQL 에서는 N+1 문제가 발생하는 경우가 있다. N+1 문제는 1나의 쿼리를 수행했는데 그외에 또 쿼리가 나가는 문제이다. 언제 N + 1 문제가 발생하는가? 연관관계 에서 회원이 팀 객체를 가지고 있다고 생각해보자. 1. 회원을 조회 하는 쿼리를 수행한다.(1) 2. 회원이 가지고있는 팀을 조회한다(N 회원수 만큼) 이렇게 N+1 문제가 발생한다. 예제 Member 는 Lazy fetch 를 사용한다. 지연로딩 그렇기 때문에 List 에 들어 있는 team은 proxy .. 2021. 9. 26.
728x90
반응형