SQL 쿼리를 그대로 사용하는 것
ORM(Object-Relational Mappping)의 기능을 이용하면서 SQL쿼리도 활용가능
네이티브 쿼리 결과를 JPA가 알아서 엔터티나 스칼라 값으로 “자동” 매핑하도록 설정해두는 것.ㅊ @SqlResultSetMapping 을 사용해 네이티브 쿼리의 결과를 매핑할 수 있다.
@SqlResultSetMapping 어노테이션은 네이티브 쿼리의 결과를 엔티티나 스칼라 값으로 매핑하기 위해 사용된다. 엔티티 매핑과 컬럼 매핑을 지정할 수 있으며, @EntityResult와 @ColumnResult 어노테이션을 이용해 매핑 정보를 추가한다.
컬럼명이 엔터티 필드와 일치할 때
@SqlResultSetMapping(
name = "CategoryMenuCountMapping",
entities = {
@EntityResult(entityClass = Category.class)
},
columns = {
@ColumnResult(name = "menu_count", type = Long.class)
}
)
엔터티의 필드 하나하나 “직접” 컬럼과 매핑시켜주는 방식. @EntityResult 내에 @FieldResult 어노테이션을 이용해서 @Column 어노테이션 대신 엔티티의 필드에 매핑을 설정할 수 도 있다
@SqlResultSetMapping(
name = "CategoryManualMapping",
entities = {
@EntityResult(
entityClass = Category.class,
fields = {
@FieldResult(name = "categoryCode", column = "cat_code"),
@FieldResult(name = "categoryName", column = "cat_name")
}
)
}
)