小黑J2EE學(xué)習(xí)ing
我很會(huì)努力
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆-21 評(píng)論-29 文章-0 trackbacks-0
小黑Hibernate學(xué)習(xí)(五)
以上實(shí)例有一個(gè)限制,即查詢對(duì)象只能根據(jù)id值來查詢。
我們可以通過完善HibernateUtil來實(shí)現(xiàn)更多更能。
package
cn.itcast.hibernate;
import
java.io.Serializable;
import
org.hibernate.HibernateException;
import
org.hibernate.Session;
import
org.hibernate.SessionFactory;
import
org.hibernate.Transaction;
import
org.hibernate.cfg.Configuration;
public
final
class
HibernateUtil
{
private
static
SessionFactory sessionFactory ;
private
HibernateUtil()
{}
static
{
Configuration cfg
=
new
Configuration() ;
cfg.configure();
sessionFactory
=
cfg.buildSessionFactory();
}
public
static
SessionFactory getSessionFactory()
{
return
sessionFactory;
}
public
static
Session getSession()
{
return
sessionFactory.openSession();
}
public
static
void
add(Object entity)
{
Session s
=
null
;
Transaction tx
=
null
;
try
{
s
=
HibernateUtil.getSession();
tx
=
s.beginTransaction();
s.save(entity);
tx.commit();
}
finally
{
if
(s
!=
null
)
s.close();
}
}
public
static
void
update(Object entity)
{
Session s
=
null
;
Transaction tx
=
null
;
try
{
s
=
HibernateUtil.getSession();
tx
=
s.beginTransaction();
s.update(entity);
tx.commit();
}
finally
{
if
(s
!=
null
)
s.close();
}
}
public
static
void
delete(Object entity)
{
Session s
=
null
;
Transaction tx
=
null
;
try
{
s
=
HibernateUtil.getSession();
tx
=
s.beginTransaction();
s.delete(entity);
tx.commit();
}
finally
{
if
(s
!=
null
)
s.close();
}
}
public
static
Object get(Class clazz,Serializable id)
{
Session s
=
null
;
try
{
s
=
HibernateUtil.getSession();
Object obj
=
s.get(clazz, id);
return
obj ;
}
finally
{
if
(s
!=
null
)
s.close();
}
}
}
以上代碼就能實(shí)現(xiàn)常用的增、刪、改以及根據(jù)id查詢的功能了!
HQL(Hibernate Query Language)
面向?qū)ο蟮牟樵冋Z言,與SQL不同,HQL中的對(duì)象名是區(qū)分大小寫的(除了JAVA類和屬性其他部分不區(qū)分大小寫);HQL中查的是對(duì)象而不是表,并且支持多態(tài);
HQL主要通過Query接口來操作,Query的創(chuàng)建方式:
Query q = session.createQuery(hql);
from Person
from User user where user.name =: name
from User user where user.name =: name and user.birthday<:birthday
Criteria
Criteria是一種比HQL更面向?qū)ο蟮牟樵兎绞健riteria的創(chuàng)建方式:
Criteria crit = session.createCriteria(DomainClass.class);
簡(jiǎn)單屬性條件如: criteria.add(Restrictions.eq(propertyName,value));
criteria.add(Restrictions.eqProperty(propertyName,otherPropertyName));
實(shí)例操作
新建一QueryTest類
package
cn.itcast.hibernate;
import
java.util.Date;
import
java.util.List;
import
org.hibernate.Query;
import
org.hibernate.Session;
import
cn.itcast.hibernate.domain.User;
public
class
QueryTest
{
public
static
void
main(String[] args)
{
User user
=
new
User();
user.setBirthday(
new
Date());
user.setName(
"
name
"
);
HibernateUtil.add(user);
query(user.getName());
}
static
void
query(String name)
{
Session s
=
null
;
try
{
s
=
HibernateUtil.getSession();
String hql
=
"
from User as user where user.name=?
"
;
//
from Object
Query query
=
s.createQuery(hql);
query.setString(
0
, name);
List
<
User
>
list
=
query.list();
//
list作用類似于executeQuery
//
User u = (User)query.uniqueResult();
//
當(dāng)查詢結(jié)構(gòu)唯一的時(shí)候可以使用
//
System.out.print(u);
for
(User user : list)
{
System.out.println(user.getName());
}
}
finally
{
if
(s
!=
null
)
s.close();
}
}
}
觀察輸出結(jié)果
Oracle中
實(shí)體類或?qū)傩悦c數(shù)據(jù)庫關(guān)鍵字沖突問題
以上是User.hbm.xml原來的代碼
<?
xml version="1.0"
?>
<!
DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<
hibernate-mapping
package
="cn.itcast.hibernate.domain"
>
<
class
name
="User"
table
="user"
>
<
id
name
="id"
>
<
generator
class
="native"
/>
</
id
>
<
property
name
="name"
column
="name"
/>
<
property
name
="birthday"
/>
</
class
>
</
hibernate-mapping
>
User類默認(rèn)關(guān)聯(lián)的表名為user,但是user在oracle中是關(guān)鍵字
我們可以設(shè)置表名為tuser。
如果tuser已經(jīng)存在,給表明加一對(duì)反引號(hào),`user` 即可。不過最好還是只改表明。
如果是字段名(屬性名)和關(guān)鍵字相沖突,其處理方法也是一樣的!
HQL的命名參數(shù)
String hql
=
"
from User as user where user.name=?
"
;
//
from Object
Query query
=
s.createQuery(hql);
query.setString(
0
, name);
以上語句中,如果where后面的屬性有多個(gè),就需要多個(gè)問號(hào),而且在set方法里面容易犯錯(cuò),比如記錯(cuò)順序等。不利于維護(hù)。
為解決這個(gè)問題,我們可以使用HQL的命名參數(shù)來解決,代碼如下:
String hql
=
"
from User as user where user.name=:name
"
;
//
from Object
Query query
=
s.createQuery(hql);
query.setString(
"
name
"
, name);
Query接口的兩個(gè)方法實(shí)現(xiàn)分頁查詢
query.setFirstResult(
200
);
//
從第200條記錄開始
query.setMaxResults(
10
);
//
共set 10條記錄
利用方言可以實(shí)現(xiàn)各個(gè)數(shù)據(jù)庫的分頁查詢。
posted on 2009-05-04 15:11
特立獨(dú)行
閱讀(299)
評(píng)論(0)
編輯
收藏
所屬分類:
Hibernate框架
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
小黑Hibernate學(xué)習(xí)(六)
小黑Hibernate學(xué)習(xí)(五)
小黑Hibernate學(xué)習(xí)(四)
小黑Hibernate學(xué)習(xí)(三) Session接口及get、load、persist方法
小黑hibernate學(xué)習(xí)(二)
小黑hibernate學(xué)習(xí)(一)
小黑J2EE學(xué)習(xí)之路 歡迎大家觀臨! 希望大家能多指教哦!
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(2)
給我留言
查看公開留言
查看私人留言
隨筆分類
Hibernate框架(6)
J2EE核心技術(shù)(1)
Java 技術(shù)
Java面試題
Spring框架(5)
Struts框架(7)
數(shù)據(jù)庫
隨筆檔案
2010年6月 (2)
2009年6月 (1)
2009年5月 (17)
2009年4月 (1)
搜索
最新評(píng)論
1.?re: struts2實(shí)現(xiàn)文件上傳和下載[未登錄]
下載做來直接就在頁面把文件打開了。。
--小菜
2.?re: struts2實(shí)現(xiàn)文件上傳和下載
你這代碼量有點(diǎn)多,STRUTS2封裝好了,頂多15行搞定
--你這代碼量有點(diǎn)多
3.?re: struts2實(shí)現(xiàn)文件上傳和下載
怎么將上傳的東西在頁面上顯示出來啊
--邊城
4.?re: struts2實(shí)現(xiàn)文件上傳和下載
配置的文件 有關(guān)鍵字, 把a(bǔ)ction 中的name 換下就可以了 @陳
--采用
5.?re: struts2實(shí)現(xiàn)文件上傳和下載
大俠 ……怎么實(shí)現(xiàn)點(diǎn)一個(gè)文件下載一個(gè)文件,而不是固定的文件?
--pppppppppp
閱讀排行榜
1.?struts2實(shí)現(xiàn)文件上傳和下載(17518)
2.?小黑struts學(xué)習(xí)(五) Action Mapping、ActionForward和ActionForm組件學(xué)習(xí)(1626)
3.?小黑Hibernate學(xué)習(xí)(三) Session接口及get、load、persist方法(1006)
4.?ASSH框架的技術(shù)基礎(chǔ)和設(shè)計(jì)(762)
5.?Spring 框架的設(shè)計(jì)理念與設(shè)計(jì)模式分析(654)
評(píng)論排行榜
1.?struts2實(shí)現(xiàn)文件上傳和下載(27)
2.?Spring 框架的設(shè)計(jì)理念與設(shè)計(jì)模式分析(1)
3.?很開心加入BlogJava 就像找到了組織一樣(1)
4.?Spring 框架的設(shè)計(jì)理念與設(shè)計(jì)模式分析(2)(0)
5.?JFreeChart的中文亂碼問題 知道的幫忙解決一下(0)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 特立獨(dú)行
主站蜘蛛池模板:
理论片在线观看免费
|
激情内射亚洲一区二区三区
|
一区二区亚洲精品精华液
|
最近高清中文字幕免费
|
久久亚洲sm情趣捆绑调教
|
最近的中文字幕大全免费8
|
亚洲国产亚洲片在线观看播放
|
最新中文字幕免费视频
|
久久精品视频亚洲
|
无码国产精品一区二区免费式芒果
|
亚洲天堂在线播放
|
99在线免费观看视频
|
久久久婷婷五月亚洲97号色
|
久操视频在线免费观看
|
久久精品国产精品亚洲艾
|
最近免费视频中文字幕大全
|
亚洲1区1区3区4区产品乱码芒果
|
美女免费视频一区二区
|
亚洲高清无码专区视频
|
日韩在线视频播放免费视频完整版
|
无码国产精品一区二区免费模式
|
成年女人午夜毛片免费看
|
亚洲av永久无码
|
久久亚洲国产精品五月天婷
|
久久一区二区三区免费播放
|
亚洲成a人片在线观看精品
|
四虎影视永久免费观看地址
|
久久久久久av无码免费看大片
|
福利免费观看午夜体检区
|
jiz zz在亚洲
|
亚洲色偷偷狠狠综合网
|
18女人腿打开无遮掩免费
|
亚洲av永久无码
|
亚洲精品高清视频
|
青青青国产免费一夜七次郎
|
久久精品无码免费不卡
|
丁香婷婷亚洲六月综合色
|
伊人久久精品亚洲午夜
|
一二三四影视在线看片免费
|
一级做a爰片性色毛片免费网站
|
免费精品一区二区三区在线观看
|