Professional Documents
Culture Documents
J2EE Hibernate 4 Hibernate Query Language
J2EE Hibernate 4 Hibernate Query Language
HQL from
HQL select
HQL aggregate function
HQL where
HQL - Expression
HQL order by
JDBC - SQL
JDBC
truy
thao
bng
Hibernate - HQL
Hibernate cung cp cc API cho php thc hin
tc thao tc cp nht nh thm, xa, sa.
Hibernate cung cp ngn ng truy vn rt mnh
c gi l Hibernate Query Language (HQL).
HQL c lp h qun tr c s d liu v c
Hibernate thng dch sang SQL tng ng trong
qu trnh thc thi.
HQL l ngn ng truy vn theo hng i tng.
Kt qu truy vn l i tng
Hibernate s dng cc lp i tng v cc
thuc tnh thay cho cc bng v cc ct.
4
Tn cc lp i tng
Cc thuc tnh trong lp i tng
V d 2 cu truy vn ging nhau
select s from Sach s <-> SELECT s FROM Sach s
Select s From Sach s <-> SELECT s FROM Sach s
from DanhMuc
select dm from DanhMuc dm
select dm from DanhMuc as dm
Ly tt c i tng sch
from Sach
select s from Sach s
- phn trang
- Ly t v tr th n (tnh t 0)
setFirstResult (int n)
- ly ti a m i tng
setMaxResults (int m)
- Tng t trong MYSQL
LIMIT N, M
HQL - join
cross join
10
11
HQL
inner join
12
HQL
left join
2 danh mc khng c
sch no thuc v
13
HQL
right join
14
HQL
s.danhMuc
Kt qu
S lng: 10
15
HQL
s.danhMuc
Kt qu
S lng: 10
16
HQL - select
1
2
3
17
HQL - select
1
2
3
18
HQL - select
1
2
3
4
5
6
7
8
9
19
HQL - select
1
2
3
4
20
HQL - select
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
package pojo;
public class MyClass {
private String maSach;
private String tenSach;
private DanhMuc danhMuc;
public MyClass() {
}
public MyClass(String maSach, String tenSach,
DanhMuc danhMuc) {
this.maSach = maSach;
this.tenSach = tenSach;
this.danhMuc = danhMuc;
}
//Getters & Setters
}
Nguyn Hong Anh nhanh@fit.hcmus.edu.vn H KHTN - 2012
HQL - select
1
2
3
4
5
6
7
8
9
22
String hql =
"select new pojo.MyClass (s.maSach, s.tenSach, s.danhMuc)
from Sach s";
Query query = session.createQuery(hql);
List<MyClass> ds=query.list();
for(int i=0; i<ds.size(); i++){
MyClass my=ds.get(i);
String maSach=my.getMaSach();
String tenSach=my.getTenSach();
DanhMuc dm=my.getDanhMuc();
}
min
max
count
sum
23
24
String hql =
HQL - where
25
1
2
3
4
5
String tenSach="Java";
String hql = "from Sach s where s.tenSach like :tenSach";
Query query = session.createQuery(hql);
query.setString("tenSach", "%"+tenSach+"%");
ArrayList<Sach> ds=query.list();
1
2
3
4
5
6
7
8
9
String tenDanhMuc="Java";
String giaBan=20000;
String hql="from Sach s
where s.danhMuc.tenDanhMuc=:tenDanhMuc
and s.giaBan>:giaBan"
Query query = session.createQuery(hql);
query.setString("tenDanhMuc", tenDanhMuc);
query.setString("giaBan", giaBan);
ArrayList<Sach> ds=query.list();
HQL - Expression
+, -, *, /
26
HQL - Expression
concat(...,...)
current_date(), current_time(),
current_timestamp()
second(...), minute(...), hour(...), day(...),
month(...), year(...)
substring(), trim(), lower(), upper(),
length(), locate(), abs(), sqrt(),
bit_length(), mod()
coalesce() , nullif()
str(), ...
27
HQL order by
1
2
3
4
5
6
7
8
9
28
String tenSach="Java";
29
String hql
hql = hql
hql = hql
hql = hql
=
+
+
+
"
"
"
"
HQL subquery
1
2
3
4
5
6
7
8
9
30
31
HI V P
32