JPQL[경로 표현식]
JPQL 경로표현식 JPQL에서 경로 표현식은 .을찍어 객체 그래프를 탐색하는 것입니다. 이떄 사용되는 용어는 상태필드, 단일 값 연관 필드, 컬렉션 값 연관 필드가 있는데 이에 대해서 알아보겠습니다. 예제 코드 select m.username -> 상태 필드 from Member m join m.team t -> 단일 값 연관 필드...
JPQL 경로표현식 JPQL에서 경로 표현식은 .을찍어 객체 그래프를 탐색하는 것입니다. 이떄 사용되는 용어는 상태필드, 단일 값 연관 필드, 컬렉션 값 연관 필드가 있는데 이에 대해서 알아보겠습니다. 예제 코드 select m.username -> 상태 필드 from Member m join m.team t -> 단일 값 연관 필드...
JPQL 서브쿼리 서브쿼리는 JPQL 쿼리안에 다른 JPQL 쿼리가 포함한 것을 의미합니다. 이를 통해 복잡합 쿼리를 단순화하거나 특정 조건에 따라 데이터를 필터링 할 수 있습니다. 서브쿼리 예시 SELECT e FROM Employee e WHERE e.salary > (SELECT AVG(e2.salary) FROM Employee e2 W...
JPQL JPQL은 객체 지향 쿼리 언어 입니다. 따라서 테이블을 대상으로 쿼리하는게 아닌, 엔티티 객체를 대상으로 쿼리를합니다. SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않습니다. 즉, 다양한 데이터베이스에서 사용이 가능합니다. JPQL은 결국에는 SQL로 변환 됩니다. JPQL 문법 select m from Member as m ...
값 타임 공유 참조 저번 포스터에서는 값 타입에 대해 다뤘습니다. 하지만 값 타임을 공유하는 상황에서는 큰 부작용이 존재합니다. 임베디드 타임 같은 값 타임을 만약에 여러 엔티티에서 공유하면 부작용이 발생해서 위험합니다. 또한, 값 타입의 실제 인스턴스인 값을 공유하는것 또한 위험합니다. 예를 들어서 하나의 임베디드 타입값을 공유하고 있다고 생...
JPA_Data_Type Spring JPA 값 타입에는 여러가지 타입이 존재합니다. 주로 JPA 값 타입은 2가지 분류로 나뉘게 됩니다. 엔티티 타입 첫번째는 엔티티 타입 입니다. 엔티티 타입은 개별적으로 식별이 가능한 개체이며, 생명주기를 갖고 있습니다. @Entity public class User { @Id @GeneratedV...
CASCADE CASCADE란? Cascade는 부모 객체의 상태 변화가 자식 객체에 영향을 주는 것을 말합니다. 즉, 부모 엔티티의 변경이 자식 엔티티에 자동으로 전파됩니다. 부모 엔티티의 상태가 변경되면 해당 변경이 자식 엔티티에 반영되는 것입니다. 이는 부모-자식 관계의 데이터 일관성을 유지하기 위한 중요한 메커니즘 중 하나입니다. CAS...
즉시로딩과 지연로딩 즉시로딩 Spring에서 즉시 로딩은 연관된 엔티티를 쿼리할 때 즉시 로딩되는 것을 의미합니다. 즉, 하나의 객체를 조회하면, 연관된 객체를 전부다 바로 조회하는 방법입니다. 지연로딩 즉시로딩과는 반대로, 지연로딩은 연관된 엔티티를 실제로 사용할 때까지 로딩을 미루는 것을 의미합니다. 그럼 둘의 차이는 뭘까요? 예시를 보면서 알...
Proxy Proxy란, 클라이언트가 서버로 요청을 할 떄, 객체를 대신하여 특정 작업을 수행하는 역할을 합니다. 즉, 대리자 역할을 하는 것 입니다. 프록시가 대리자 역할을 하면서, 클라이언트는 실제 서버 객체의 세부 내용에 대해 알 필요가 없으며, 서버 역시 클라이언트에 대한 정보를 감추고 특정 작업을 수행할 수 있습니다. 주로 AOP, 트랜...
AOP 용어 정리 AOP에 대해 알아보기전에 주로 사용하는 용어에 대해 간단하게 알아보고 가겠습니다. Aspect 관심사를 모듈화한 것입니다. Advice Aspect에서 특정 지점에서 실행되어야 하는 코드 블록입니다. Before, Afrer, Around 등 다양한 종류의 조언이 있으며, 각각 다른 시점에 실행됩니다. Join...
상속관계 매핑 객체지향 프로그래밍에서 객체 간의 상속 관계를 데이터베이스 테이블 간의 관계로 매핑하는 것을 말합니다. 즉, 객체지향 프로그래밍에서 사용되는 클래스(객체)간의 상속 관계를 데이터베이스의 테이블 간의 관계로 어떻게 옮겨지는지를 나타내는 개념입니다. 주요 어노테이션 @Inheritance(strategy=InheritanceType...