사용자 도구

사이트 도구


java:jpa:nativequery

문서의 이전 판입니다!


JPA and Native Query (SQL)

ResultSetMapping

  • 단일 엔티티에 대한 Native Query 실행은 매핑이 필요없다.
  • 다중 Entity를 결과로 받는 Native Query는 @SqlResultSetMapping로 매핑 정보를 지정해야 하며 그 결과는 List<Object[]>로 리턴한다.
    • Object[]에는 SqlResultSetMapping에 지정된 순서대로 결과 엔티티 객체가 들어온다.
  • NativeQuery Result Set Mapping은 모든 필드를 명백히 기술해서 매핑해 주자. 그렇지 않으면 컬럼의 변경이 발생하거나 두 개 이상 엔티티에 대한 매핑시 동일 컬럼 이름 존재시 심각한 오류가 발생할 수 있다.
  • 두 개 이상의 엔티티를 로딩하는데 그 것들이 서로 연관 관계일 경우 이미 연관 관계가 자동으로 채워진 상태의 엔티티가 생성된다. 이미 Native Query 결과 객체(result set mapping)내에 연관에 관한 데이터 매핑이 있으면 다시 쿼리를 날리지 않는다.

필드 매핑시 주의할 점

  • @ManyToOne의 One 측에 대한 매핑 컬럼이 존재하는 경우에 해당 컬럼과 필드명도 매핑해야한다.
    • 예를들어 ArticleBoard의 자식이고 Article에 대해 매핑할 경우
    • Article.boardIdArticle.board 필드 두개를 모두 매핑해두었다면
    • boardIdarticle.board_id와, boardarticle.board_id 이렇게 두 번의 필드 매핑을 해줘야 한다.
java/jpa/nativequery.1423711259.txt.gz · 마지막으로 수정됨: 2015/02/12 12:20 저자 kwon37xi