小黑J2EE學(xué)習(xí)ing
我很會努力
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆-21 評論-29 文章-0 trackbacks-0
小黑Hibernate學(xué)習(xí)(五)
以上實例有一個限制,即查詢對象只能根據(jù)id值來查詢。
我們可以通過完善HibernateUtil來實現(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();
}
}
}
以上代碼就能實現(xiàn)常用的增、刪、改以及根據(jù)id查詢的功能了!
HQL(Hibernate Query Language)
面向?qū)ο蟮牟樵冋Z言,與SQL不同,HQL中的對象名是區(qū)分大小寫的(除了JAVA類和屬性其他部分不區(qū)分大小寫);HQL中查的是對象而不是表,并且支持多態(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);
簡單屬性條件如: criteria.add(Restrictions.eq(propertyName,value));
criteria.add(Restrictions.eqProperty(propertyName,otherPropertyName));
實例操作
新建一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)唯一的時候可以使用
//
System.out.print(u);
for
(User user : list)
{
System.out.println(user.getName());
}
}
finally
{
if
(s
!=
null
)
s.close();
}
}
}
觀察輸出結(jié)果
Oracle中
實體類或?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)存在,給表明加一對反引號,`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后面的屬性有多個,就需要多個問號,而且在set方法里面容易犯錯,比如記錯順序等。不利于維護(hù)。
為解決這個問題,我們可以使用HQL的命名參數(shù)來解決,代碼如下:
String hql
=
"
from User as user where user.name=:name
"
;
//
from Object
Query query
=
s.createQuery(hql);
query.setString(
"
name
"
, name);
Query接口的兩個方法實現(xiàn)分頁查詢
query.setFirstResult(
200
);
//
從第200條記錄開始
query.setMaxResults(
10
);
//
共set 10條記錄
利用方言可以實現(xiàn)各個數(shù)據(jù)庫的分頁查詢。
posted on 2009-05-04 15:11
特立獨行
閱讀(308)
評論(0)
編輯
收藏
所屬分類:
Hibernate框架
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(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年7月
>
日
一
二
三
四
五
六
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
8
9
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(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)
搜索
最新評論
1.?re: struts2實現(xiàn)文件上傳和下載[未登錄]
下載做來直接就在頁面把文件打開了。。
--小菜
2.?re: struts2實現(xiàn)文件上傳和下載
你這代碼量有點多,STRUTS2封裝好了,頂多15行搞定
--你這代碼量有點多
3.?re: struts2實現(xiàn)文件上傳和下載
怎么將上傳的東西在頁面上顯示出來啊
--邊城
4.?re: struts2實現(xiàn)文件上傳和下載
配置的文件 有關(guān)鍵字, 把a(bǔ)ction 中的name 換下就可以了 @陳
--采用
5.?re: struts2實現(xiàn)文件上傳和下載
大俠 ……怎么實現(xiàn)點一個文件下載一個文件,而不是固定的文件?
--pppppppppp
閱讀排行榜
1.?struts2實現(xiàn)文件上傳和下載(17533)
2.?小黑struts學(xué)習(xí)(五) Action Mapping、ActionForward和ActionForm組件學(xué)習(xí)(1640)
3.?小黑Hibernate學(xué)習(xí)(三) Session接口及get、load、persist方法(1011)
4.?ASSH框架的技術(shù)基礎(chǔ)和設(shè)計(771)
5.?Spring 框架的設(shè)計理念與設(shè)計模式分析(664)
評論排行榜
1.?struts2實現(xiàn)文件上傳和下載(27)
2.?Spring 框架的設(shè)計理念與設(shè)計模式分析(1)
3.?很開心加入BlogJava 就像找到了組織一樣(1)
4.?Spring 框架的設(shè)計理念與設(shè)計模式分析(2)(0)
5.?JFreeChart的中文亂碼問題 知道的幫忙解決一下(0)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 特立獨行
主站蜘蛛池模板:
亚洲中文字幕AV在天堂
|
国产成人亚洲综合色影视
|
亚洲不卡1卡2卡三卡2021麻豆
|
免费视频精品一区二区三区
|
国产亚洲老熟女视频
|
国产免费伦精品一区二区三区
|
亚洲国产成人五月综合网
|
黄页网址大全免费观看12网站
|
国产jizzjizz免费看jizz
|
偷自拍亚洲视频在线观看99
|
免费成人av电影
|
国产免费播放一区二区
|
亚洲AV综合色区无码一区爱AV
|
中文字幕无码一区二区免费
|
亚洲高清国产AV拍精品青青草原
|
99热免费在线观看
|
中文字幕亚洲精品资源网
|
亚洲一级毛片免费在线观看
|
亚洲伊人色一综合网
|
免费二级毛片免费完整视频
|
羞羞漫画登录页面免费
|
JLZZJLZZ亚洲乱熟无码
|
国产午夜不卡AV免费
|
亚洲精品视频专区
|
好吊妞788免费视频播放
|
黄色三级三级免费看
|
亚洲乱码精品久久久久..
|
最近的中文字幕大全免费8
|
久久亚洲精品国产亚洲老地址
|
免费国产成人午夜电影
|
a毛片在线看片免费
|
久久精品国产亚洲AV久
|
亚洲成AⅤ人影院在线观看
|
日韩成人免费视频
|
亚洲欧洲另类春色校园网站
|
免费看国产精品麻豆
|
久久免费高清视频
|
亚洲国产aⅴ成人精品无吗
|
亚洲色精品aⅴ一区区三区
|
成人奭片免费观看
|
成人影片一区免费观看
|