Back-end/JPA
[JPA] native query 사용 시 enum을 변수로 하기 ( SpEL expression )
🙂 Native Query 란? JPQL을 사용해서 쿼리 메소드를 사용하는 것이 아닌 MySQL과 비슷한 형식으로 쿼리를 만들어 적용할 수 있다. 그러나, JPQL에서는 표준 SQL의 대부분의 기능을 지원하지만, 지원하지 못하는 문법들도 존재한다. ( ex. sub query ) 이때 Native Query를 사용하면 JPQL에서 지원하지 못하는 문법들을 사용할 수 있다. 🙂 Native Query 를 사용하는 방법 //-- JPQL @Query(value="SELECT M from Member M" ) //-- Native Query @Query(value="SELECT * from Member m", nativeQuery= true ) 🙂 Native Query에서 @Param에 Enum을 넣는 방법..
[JPA] JPA native query 사용시 dto mapping
보통 조인을 많이 사용하게 될 상황이 생기면 JPA Native query를 사용한다. 이 때, 조인되어지는 테이블들의 column 값을 사용해야하는 상황에는 Entity에 맵핑을 시켜줄 수 없는 문제가 있다. 이럴 때에는 바로 원하는 변수가 있는 DTO에 맵핑을 시켜주어야 하는데,, 어떤 방법들이 있을까? 1. Entity에서의 `@SqlResultSetMapping` 사용 @Entity @NamedNativeQuery( name = "find_books', query = "SELECT " + " 생략.... ", resultSetMapping = "book_dto" ) @SqlResultSetMapping( name = "book_dto", classes = @ConstructorResult( tar..
[JPA] JPA (Java Persistence API)란?
🧐 JPA란? 자바 객체와 DB테이블 간의 매핑을 처리하기 위한 ORM 표준 💡 요소 엔티티 DB에서 지속적으로 저장된 데이터를 자바 객체에 매핑 메모리 상에 자바 객체의 인스턴스 형태로 존재하며 EntitiyManager에 의해 DB의 데이터와 동기화 엔티티 매니저 필요에 따라 Enitity와 데이터베이스의 데이터를 동기화한다. EntitiyManager에서 제공하는 Entity 조작 API를 이용해 Entity에 대해 CRUD 작업을 할 수 있다. 영속성 컨텍스트 ( Persistence Context ) 엔티티를 영구적으로 저장하는 환경 엔티티를 저장하거나 검색할 때 엔티티 매니저는 영속성 컨텍스트에서 엔티티를 저장하고 관리 엔티티 매니저를 생성할 때 영속성 컨텍스트가 만들어진다. 영속성 컨텍스트에..