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 s dng cc cu lnh SQL thc hin vn d liu truy vn d liu v cc tc cp nht nh thm, xa, sa trn d liu.
thao tc tt cc cu lnh SQL cn quan tm n cc bng, cc dng, cc ct v mi quan h gia cc bng v c bit l h qun tr c s d liu ang lm vic. Kt qu tr v ca cu lnh truy vn l danh sch cc dng d liu.
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
String hql = "from Sach"; Query query = session.createQuery(hql); query.setFirstResult(3); query.setMaxResults(5); List<Sach> ds=query.list();
- 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
15
HQL
s.danhMuc
16
HQL - select
1 2 3 String hql = "select s.danhMuc from Sach s"; Query query = session.createQuery(hql); List<DanhMuc> ds=query.list();
17
HQL - select
1 2 3 String hql = "select s.danhMuc.tenDanhMuc from Sach s"; Query query = session.createQuery(hql); List<String> ds=query.list();
18
HQL - select
1 2 3 4 5 6 7 8 9 String h ="select s.maSach, s.tenSach, s.danhMuc from Sach s"; Query query = session.createQuery(h); List<Object[]> ds=query.list(); for(int i=0; i<ds.size(); i++){ Object[] objs=ds.get(i); String maSach=(String)objs[0]; String tenSach=(String)objs[1]; DanhMuc dm=(DanhMuc)objs[2]; }
19
HQL - select
1 2 3 4 String hql ="select distinct s.danhMuc.tenDanhMuc from Sach s"; Query query = session.createQuery(hql); List<String> ds=query.list();
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 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(); }
22
min
max count
sum
23
24
HQL - where
1 2 3 4 5 1 2 3 4 5 6 7 8 9 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(); 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();
25
HQL - Expression
+, -, *, /
in, not in, between, is null, is not null, is empty, is not empty, member of, not member of
case ... when ... then ... else ... end
26
HQL - Expression
concat(...,...)
coalesce() , nullif()
str(), ...
27
HQL order by
1 2 3 4 5 6 7 8 9 String tenSach="Java";
String hql = " from Sach s"; hql=hql +" where s.tenSach like :tenSach"; hql=hql +" order by s.tenSach desc";
Query query = session.createQuery(hql); query.setString("tenSach", "%"+tenSach+"%"); ArrayList<Sach> ds = query.list();
28
29
HQL subquery
1 2 3 4 5 6 7 8 9 String hql = " select s"; hql = hql + " from Sach s"; hql = hql + " where s.giaBan > "; hql = hql + " ("; hql = hql + " select avg(s.giaBan)"; hql = hql + " from Sach s"; hql = hql + " )"; Query query = session.createQuery(hql); ArrayList<Sach> ds = query.list();
30
31
HI V P
32