小黑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ú)行
主站蜘蛛池模板:
亚洲卡一卡2卡三卡4麻豆
|
亚洲成A人片在线观看无码3D
|
特级无码毛片免费视频尤物
|
两性色午夜视频免费网
|
97在线视频免费公开视频
|
中国内地毛片免费高清
|
在线观看免费视频一区
|
免费看无码特级毛片
|
亚洲电影免费在线观看
|
3d成人免费动漫在线观看
|
久久免费看黄a级毛片
|
亚州免费一级毛片
|
欧美日韩国产免费一区二区三区
|
免费人成在线视频
|
日韩一区二区免费视频
|
免费va在线观看
|
久久99亚洲综合精品首页
|
亚洲VA中文字幕无码毛片
|
午夜免费啪视频在线观看
|
99爱在线精品视频免费观看9
|
0588影视手机免费看片
|
免费精品一区二区三区在线观看
|
日韩在线免费电影
|
亚洲婷婷国产精品电影人久久
|
国产亚洲综合网曝门系列
|
亚洲国产精品久久久久网站
|
亚洲乱码一二三四区麻豆
|
亚洲gay片在线gv网站
|
一级女人18片毛片免费视频
|
久久精品私人影院免费看
|
100000免费啪啪18免进
|
国产精品免费电影
|
亚洲成色WWW久久网站
|
亚洲一区二区三区免费观看
|
亚洲av无码专区在线观看亚
|
男人j进女人p免费视频
|
国产成人无码区免费内射一片色欲
|
亚洲精品高清一二区久久
|
亚洲阿v天堂在线
|
久久精品国产亚洲AV忘忧草18
|
羞羞网站在线免费观看
|