본문 바로가기
반응형

전체 글 목록571

[JPA] JPQL 중급 - (1) 경로 표현식, 페치 조인**(중요!) 경로 표현식 경로 표현식이란 점을 찍어 객체 그래프를 탐색하는 것 용어 정리 • 상태 필드(state field): 단순히 값을 저장하기 위한 필드 (ex: m.username) • 연관 필드(association field): 연관관계를 위한 필드 • 단일 값 연관 필드: @ManyToOne, @OneToOne, 대상이 엔티티(ex: m.team) • 컬렉션 값 연관 필드: @OneToMany, @ManyToMany, 대상이 컬렉션(ex: m.orders) 경로 표현식 특징 • 상태 필드(state field): 경로 탐색의 끝, 탐색X • 단일 값 연관 경로: 묵시적 내부 조인(inner join) 발생, 탐색O • 컬렉션 값 연관 경로: 묵시적 내부 조인 발생, 탐색X -> FROM 절에서 명시적 .. 2021. 12. 20.
[JPA] JPQL 기초 - (2) 조인, 서브쿼리, 조건식, JPQL 함수 조인 // []는 생략 가능 • 내부 조인: SELECT m FROM Member m [INNER] JOIN m.team t • 외부 조인: SELECT m FROM Member m LEFT [OUTER] JOIN m.team t • 세타 조인: select count(m) from Member m, Team t where m.username = t.name 조인 - on 활용 1. 조인 대상 필터링 • 예) 회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인 JPQL: SELECT m, t FROM Member m LEFT JOIN m.team t on t.name = 'A' SQL: SELECT m.*, t.* FROM Member m LEFT JOIN Team t ON m.TEAM_ID=t.id a.. 2021. 12. 20.
[JPA] JPQL 기초 - (1) 파라미터 바운딩, 프로젝션, 페이징 JPQL(Java Persistence Query Language) • JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공(특정데이터베이스 SQL에 의존하 지 않는다.) • SQL과 문법 유사, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 지원 • JPQL은 엔티티 객체를 대상으로 쿼리 • SQL은 데이터베이스 테이블을 대상으로 쿼리 TypeQuery, Query • TypeQuery: 반환 타입이 명확할 때 사용 • Query: 반환 타입이 명확하지 않을 때 사용 TypedQuery query = em.createQuery("SELECT m FROM Member m", Member.class); Query query = em.createQuery("SE.. 2021. 12. 19.
[JPA] 값 타입 알아보기 엔티티 타입 VS 값 타입 • 엔티티 타입 • @Entity로 정의하는 객체 • 데이터가 변해도 식별자로 지속해서 추적 가능 • 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 • 값 타입 • int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 • 식별자가 없고 값만 있으므로 변경시 추적 불가 • 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 • 값 타입은 기본값 타입, 임베디드 타입, 컬렉션 값타입으로 구성됨 값 타입은 기본값 타입, 임베디드 타입, 컬렉션 값타입으로 구성됨 기본값 타입 - String, int - 생명주기를 엔티티에 의존(회원을 삭제하면 이름, 나이 필드도 같이 삭제됨) - 값 타입은 공유하면 안됨(회원 이름 변경.. 2021. 12. 19.
[알고리즘] 알고리즘 면접 대비 코드가 많아 깃허브에 정리를 해두었다! https://github.com/LeeYongjun1030/Tech-Interview-Questions GitHub - LeeYongjun1030/Tech-Interview-Questions: tech interview questions tech interview questions. Contribute to LeeYongjun1030/Tech-Interview-Questions development by creating an account on GitHub. github.com 2021. 12. 15.
[JPA] 프록시, 즉시 로딩과 지연 로딩, 영속성 전이, 고아 객체 프록시 프록시란? - em.find() 대신 em.getReference() 사용 - 프록시는 데이터베이스 조회를 미루는 가짜 엔티티 객체를 조회한다. 프록시의 특징 - 실제 클래스를 상속받아 만들어지고, 겉모습이 같다. - 사용하는 입장에서는 이론상 프록시인지 진짜 객체인지 구분하지 않고 사용 - 프록시 객체는 실제 객체의 참조(target)을 보관 - 프록시 객체 호출 시 실제 객체의 메서드를 호출(delegate) 프록시 객체 초기화 초기화 시 영속성 컨텍스트를 통해 db를 조회한다. Member member = em.getReference(Member.class, “id1”); member.getName(); 주의할 점 - 처음 사용할때 한번만 초기화된다. - 초기화를 한다고 프록시 객체가 실제 .. 2021. 12. 15.
반응형