【 JavaWeb 】 hibenate HQL 조회 매개 변수 설정

3581 단어 Javaweb
Hibernate 에서 동적 조회 매개 변수 바 인 딩 에 풍부 한 지원 을 제공 합 니 다. 그러면 조회 매개 변수 동적 바 인 딩 은 무엇 입 니까?사실 우리 가 전통 적 인 JDBC 프로 그래 밍 에 익숙 하 다 면 우 리 는 조회 매개 변수 가 동적 으로 연결 되 는 것 을 이해 하기 어렵 지 않 습 니 다. 다음 과 같은 코드 전통 JDBC 의 매개 변수 바 인 딩:
PrepareStatement pre=connection.prepare(“select * from User where user.name=?”);
pre.setString(1,”zhaoxin”);
ResultSet rs=pre.executeQuery();

Hibernate 에서 도 이와 같은 조회 매개 변수 바 인 딩 기능 을 제공 하 였 으 며, Hibernate 에 서 는 이 기능 에 대해 전통 적 인 JDBC 작업 보다 풍부 한 특성 을 제공 하 였 으 며, Hibernate 에 서 는 총 4 가지 매개 변수 바 인 딩 방식 이 존재 합 니 다. 다음은 다음 과 같이 소개 합 니 다.
A 、 매개 변수 이름 으로 귀속:
HQL 구문 에서 이름 을 가 진 매개 변 수 를 정의 하려 면 ":" 로 시작 합 니 다. 형식 은 다음 과 같 습 니 다.
Query query=session.createQuery(“from User user where user.name=:customername and user:customerage=:age ”);
query.setString(“customername”,name);
query.setInteger(“customerage”,age);

위 코드 에 서 는 customername 과: customerage 가 각각 이름 을 가 진 매개 변수 customername 과 customerage 를 정의 한 다음 에 Query 인터페이스의 setXXX () 방법 으로 이름 매개 변수 수 치 를 설정 하고 setXXX () 방법 은 두 개의 매개 변 수 를 포함 하 며 각각 이름 을 가 진 매개 변수 이름과 이름 을 가 진 매개 변수 실제 값 입 니 다.
B. 매개 변수 위치 에 따라 방 정:
"HQL 검색 어 에"? "매개 변수 위 치 를 정의 합 니 다. 형식 은 다음 과 같 습 니 다.
Query query=session.createQuery(“from User user where user.name=? and user.age =? ”);
query.setString(0,name);
query.setInteger(1,age);

마찬가지 로 setXXX () 방법 으로 바 인 딩 파 라 메 터 를 설정 합 니 다. 다만 이때 setXXX () 방법의 첫 번 째 파 라 메 터 는 HQL 구문 에 나타 난 위치 번호 (0 부터 번호) 를 대표 하고 두 번 째 파 라 메 터 는 매개 변수의 실제 값 을 대표 합 니 다.
주: 실제 개발 에서 명칭 에 따라 파 라미 터 를 정 하 는 것 을 제창한다. 왜냐하면 이것 은 매우 좋 은 프로그램의 가 독성 을 제공 할 수 있 을 뿐만 아니 라 프로그램의 유지보수 성도 높 일 수 있 기 때문이다. 왜냐하면 파라미터 의 위치 가 바 뀔 때 명칭 에 따라 파 라미 터 를 정 하 는 방식 에서 프로그램 코드 를 조정 할 필요 가 없 기 때문이다.
C. setParameter () 방법:
Hibernate 의 HQL 조회 에서 setParameter () 방법 을 통 해 임의의 종류의 인 자 를 정할 수 있 습 니 다. 다음 코드 는 다음 과 같 습 니 다.
String hql=”from User user where user.name=:customername ”;
Query query=session.createQuery(hql);
query.setParameter(“customername”,name,Hibernate.STRING);

상기 코드 에서 보 듯 이 setParameter () 방법 은 세 개의 매개 변 수 를 포함 하 는데 그것 이 바로 이름 매개 변수 이름, 이름 매개 변수 실제 값, 그리고 이름 매개 변수 맵 유형 이다.일부 매개 변수 유형 setParameter () 방법 에 대해 서 는 매개 변수 값 을 가 진 자바 형식 으로 대응 하 는 맵 형식 을 추측 할 수 있 습 니 다. 따라서 이 때 는 맵 형식 을 표시 하지 않 아 도 됩 니 다. 위의 예 와 같이 직접 이렇게 쓸 수 있 습 니 다.
query.setParameter(“customername”,name);그러나 일부 유형 에 대해 서 는 java. util. Date 형식 과 같은 맵 형식 을 써 야 합 니 다. Hibernate 의 다양한 맵 형식, 예 를 들 어 Hibernate. DATA 나 Hibernate. TIMESTAMP 와 대응 하기 때 문 입 니 다.
D. setProperties () 방법:
Hibernate 에 서 는 setProperties () 방법 을 사용 하여 이름 을 가 진 매개 변 수 를 대상 의 속성 값 과 연결 할 수 있 습 니 다. 다음 프로그램 코드 는 다음 과 같 습 니 다.
Customer customer=new Customer();
customer.setName(“pansl”);
customer.setAge(80);
Query query=session.createQuery(“from Customer c where c.name=:name and c.age=:age ”);
query.setProperties(customer);

setProperties () 방법 은 customer 대상 인 스 턴 스 의 속성 값 을 명명 매개 변수 에 자동 으로 일치 시 킵 니 다. 그러나 명명 매개 변수 이름 은 실체 대상 에 해당 하 는 속성 과 동명 이 어야 합 니 다.
여기 에는 또 하나의 특수 한 setEntity () 방법 이 있 습 니 다. 이름 을 가 진 매개 변 수 를 지구 화 대상 과 연결 시 킬 것 입 니 다. 아래 코드 와 같 습 니 다.
Customer customer=(Customer)session.load(Customer.class,”1”);
Query query=session.createQuery(“from Order order where order.customer=:customer ”);
query. setEntity(“customer”,customer);
List list=query.list();

위의 코드 는 다음 과 같은 SQL 문 구 를 생 성 합 니 다.
Select * from order where customer_ID=’1’;

다음으로 이동:http://blog.csdn.net/daixinmei/article/details/12966915

좋은 웹페이지 즐겨찾기