jpa에서.. repository를 이용하여 findAll이나.. findOneBy…. 시리즈를 써서 데이타를 조회 할수 있지만
아래와 같이 특정 쿼리를 직접 입력하여 이용도 가능합니다.
/classes/META-INF/orm.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?><entity-mappingsxmlns="http://java.sun.com/xml/ns/persistence/orm"version="2.0"><named-queryname="Inter.findByAlal2"><query>select i from Inter i where i.internameko = ?1</query></named-query><named-native-queryname="Inter.findByAlal"result-class="sample.jpa.Inter"><query>select a.inter_seq, a.inter_name_ko, a.inter_name_en from tb_inter a where a.inter_name_ko = ?</query></named-native-query></entity-mappings>
또는.. 아래와 같이 Entity 클래스에 선언해도 됩니다
1
2
3
4
5
6
@Entity@Table(name="tb_inter")@NamedQuery(name="User.findByAlal2",query="select i from Inter i where i.internameko = ?1")publicclassInter{....}
(비슷한 속성으로는 @Query도 사용가능하고. 이 속성은 Repository에 사용합니다.)
named-query와 named-native-query의 차이점
named-query는 현재 코드내에 선언한 Entity를 기준으로 쿼리를 날린다. (Inter.java파일 참고)
named-native-query는 db에 직접 쿼리를 날린다. (그러므로 result-class를 지정해야 한다.)