在使用Hibernate做開發時,可以直接在源代碼里寫HQL/SQL,也可以利用配置文件統一寫HQL/SQL
下面介紹后者的做法
1
hibernate.queries.hbm.xml
2
***************************
3
<?xml version="1.0"?>
4
5
<!DOCTYPE hibernate-mapping PUBLIC
6
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
7
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
8
9
<hibernate-mapping>
10
11
<typedef class="org.jbpm.db.hibernate.StringMax" name="string_max" />
12
13
<!-- related to ProcessDefintion -->
14
<!-- ########################### -->
15
<!-- HQL -->
16
<query name="QueryUser">
17
<![CDATA[
18
FROM User u
WHERE u.username = :username
22
]]>
23
</query>
24
<!--SQL-->
25
<sql-query name="SqlQueryUser">
26
<![CDATA[
27
SELECT
28
{u.*}
29
FROM
30
user u
31
WHERE
32
u.user_name = :userName
33
]]>
34
<return alias="u" class="com.test.entity.User"/>
35
</sql-query>
36
37
</hibernate-mapping>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

WHERE u.username = :username
22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

1
hibernate.cfg.xml
2
---------------------
3
<?xml version="1.0"?>
4
<!DOCTYPE hibernate-configuration PUBLIC
5
"-//Hibernate/Hibernate Configuration DTD//EN"
6
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
7
8
<hibernate-configuration>
9
<session-factory>
10

11
<mapping resource="User.hbm.xml"/>
12
13
<mapping resource="hibernate.queries.hbm.xml"/>
14
15

16
</session-factory>
17
</hibernate-configuration>
18

2

3

4

5

6

7

8

9

10


11

12

13

14

15


16

17

18

1
Java Code:
2
----------
3
String username = "
";
4
Session session =
;
5
Query query = session.getNamedQuery("QueryUser");
6
//Query query = session.getNamedQuery("SqlQueryUser");
7
query.setString("username", username);
8
List userList = query.list();
9

2

3


4


5

6

7

8

9
