Java & Assembly
首頁
新隨筆
聯系
管理
隨筆-208 評論-469 文章-30 trackbacks-0
用hibernate3實現增刪改查
程序結構圖
SQLServer中的表設計
db.HibernateUtil
package
?db;
import
?org.hibernate.HibernateException;
import
?org.hibernate.Session;
import
?org.hibernate.SessionFactory;
import
?org.hibernate.cfg.Configuration;
/**?*/
/**
?*?Configures?and?provides?access?to?Hibernate?sessions,?tied?to?the?current
?*?thread?of?execution.?Follows?the?Thread?Local?Session?pattern,?see
?*?{
@link
?
http://hibernate.org/42.html
}.
?
*/
public
?
class
?HibernateUtil
{
????
/**?*/
/**
?????*?Location?of?hibernate.cfg.xml?file.?NOTICE:?Location?should?be?on?the
?????*?classpath?as?Hibernate?uses?#resourceAsStream?style?lookup?for?its
?????*?configuration?file.?That?is?place?the?config?file?in?a?Java?package?-?the
?????*?default?location?is?the?default?Java?package.<br>
?????*?<br>
?????*?Defaults:?<br>
?????*?<code>CONFIG_FILE_LOCATION?=?"/hibernate.conf.xml"</code>?You?can
?????*?change?location?with?setConfigFile?method?session?will?be?rebuilded?after
?????*?change?of?config?file
?????
*/
????
private
?
static
?String?CONFIG_FILE_LOCATION?
=
?
"
/hibernate.cfg.xml
"
;
????
private
?
static
?
final
?ThreadLocal?threadLocal?
=
?
new
?ThreadLocal();
????
private
?
static
?Configuration?configuration?
=
?
new
?Configuration();
????
private
?
static
?SessionFactory?sessionFactory;
????
private
?
static
?String?configFile?
=
?CONFIG_FILE_LOCATION;
????
private
?HibernateUtil()
????
{
????}
????
/**?*/
/**
?????*?Returns?the?ThreadLocal?Session?instance.?Lazy?initialize?the
?????*?<code>SessionFactory</code>?if?needed.
?????*?
?????*?
@return
?Session
?????*?
@throws
?HibernateException
?????
*/
????
public
?
static
?Session?getCurrentSession()?
throws
?HibernateException
????
{
????????Session?session?
=
?(Session)?threadLocal.get();
????????
if
?(session?
==
?
null
?
||
?
!
session.isOpen())
????????
{
????????????
if
?(sessionFactory?
==
?
null
)
????????????
{
????????????????rebuildSessionFactory();
????????????}
????????????session?
=
?(sessionFactory?
!=
?
null
)?
?
?sessionFactory.openSession()
????????????????????:?
null
;
????????????threadLocal.set(session);
????????}
????????
return
?session;
????}
????
/**?*/
/**
?????*?Rebuild?hibernate?session?factory
?????*?
?????
*/
????
public
?
static
?
void
?rebuildSessionFactory()
????
{
????????
try
????????
{
????????????configuration.configure(configFile);
????????????sessionFactory?
=
?configuration.buildSessionFactory();
????????}
?
catch
?(Exception?e)
????????
{
????????????System.err.println(
"
%%%%?Error?Creating?SessionFactory?%%%%
"
);
????????????e.printStackTrace();
????????}
????}
????
/**?*/
/**
?????*?Close?the?single?hibernate?session?instance.
?????*?
?????*?
@throws
?HibernateException
?????
*/
????
public
?
static
?
void
?closeCurrentSession()?
throws
?HibernateException
????
{
????????Session?session?
=
?(Session)?threadLocal.get();
????????threadLocal.set(
null
);
????????
if
?(session?
!=
?
null
)
????????
{
????????????session.close();
????????}
????}
????
/**?*/
/**
?????*?return?session?factory
?????*?
?????
*/
????
public
?
static
?SessionFactory?getSessionFactory()
????
{
????????
return
?sessionFactory;
????}
????
/**?*/
/**
?????*?return?session?factory
?????*?
?????*?session?factory?will?be?rebuilded?in?the?next?call
?????
*/
????
public
?
static
?
void
?setConfigFile(String?configFile)
????
{
????????HibernateUtil.configFile?
=
?configFile;
????????sessionFactory?
=
?
null
;
????}
????
/**?*/
/**
?????*?return?hibernate?configuration
?????*?
?????
*/
????
public
?
static
?Configuration?getConfiguration()
????
{
????????
return
?configuration;
????}
}
model.User
package
?model;
public
?
class
?User
{
????
private
?Integer?id;
????
private
?String?username;
????
private
?String?password;
????
public
?User()
????
{
????????
????}
????
public
?User(?String?password)
????
{
????????
this
.password?
=
?password;
????}
????
public
?Integer?getId()
????
{
????????
return
?id;
????}
????
public
?
void
?setId(Integer?id)
????
{
????????
this
.id?
=
?id;
????}
????
public
?String?getPassword()
????
{
????????
return
?password;
????}
????
public
?
void
?setPassword(String?password)
????
{
????????
this
.password?
=
?password;
????}
????
public
?String?getUsername()
????
{
????????
return
?username;
????}
????
public
?
void
?setUsername(String?username)
????
{
????????
this
.username?
=
?username;
????}
}
model.hbm.xml
<?
xml?version='1.0'?encoding='UTF-8'
?>
<!
DOCTYPE?hibernate-mapping?PUBLIC
??????????"-//Hibernate/Hibernate?mapping?DTD?2.0//EN"
??????????"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
>
<
hibernate-mapping
>
<
class?
name
="model.User"
?table
="user1"
?
>
<
id?
name
="id"
>
<
generator?
class
="identity"
/>
</
id
>
<
property?
name
="username"
/>
<
property?
name
="password"
/>
</
class
>
</
hibernate-mapping
>
hibernate.cfg.xml
<?
xml?version='1.0'?encoding='UTF-8'
?>
<!
DOCTYPE?hibernate-configuration?PUBLIC
??????????"-//Hibernate/Hibernate?Configuration?DTD?2.0//EN"
??????????"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"
>
<!--
?Generated?by?MyEclipse?Hibernate?Tools.???????????????????
-->
<
hibernate-configuration
>
<
session-factory
>
????
<
property?
name
="dialect"
>
org.hibernate.dialect.SQLServerDialect
</
property
>
????
<
property?
name
="connection.url"
>
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=login
</
property
>
????
<
property?
name
="connection.username"
>
lzqdiy
</
property
>
????
<
property?
name
="connection.password"
>
lzqdiy
</
property
>
????
<
property?
name
="connection.driver_class"
>
com.microsoft.jdbc.sqlserver.SQLServerDriver
</
property
>
????
<
property?
name
="myeclipse.connection.profile"
>
conn2
</
property
>
????
<
mapping?
resource
="model/model.hbm.xml"
?
/>
</
session-factory
>
</
hibernate-configuration
>
HibernateTest
import
?java.util.Iterator;
import
?java.util.List;
import
?org.hibernate.HibernateException;
import
?org.hibernate.Query;
import
?org.hibernate.Session;
import
?org.hibernate.Transaction;
import
?model.User;
import
?db.HibernateUtil;
public
?
class
?HibernateTest
{
????
/**?*/
/**
?????*?
@param
?args
?????*?
@throws
?HibernateException
?????
*/
????
public
?
void
?insertUser()?
????
{
????????Session?session?
=
?HibernateUtil.getCurrentSession();
????????Transaction?tx?
=
?session.beginTransaction();
????????User?user?
=
?
new
?User();
????????user.setUsername(
"
lzqdiy
"
);
????????user.setPassword(
"
lzqdiy
"
);
????????session.save(user);
????????tx.commit();
????????HibernateUtil.closeCurrentSession();
????????System.out.println(
"
新增成功!
"
);
????}
????
public
?List?getUsers()?
????
{
????????Session?session?
=
?HibernateUtil.getCurrentSession();
????????Transaction?tx?
=
?session.beginTransaction();
????????String?hql?
=
?
"
select?new?User(password)?from?model.User??where?username=:name
"
;
????????Query?query?
=
?session.createQuery(hql);
????????query.setString(
"
name
"
,?
"
lzqdiy
"
);
????????List?list?
=
?query.list();
????????tx.commit();
????????HibernateUtil.closeCurrentSession();
????????
return
?list;
????}
????
public
?
void
?updateUsers()?
????
{
????????Session?session?
=
?HibernateUtil.getCurrentSession();
????????Transaction?tx?
=
?session.beginTransaction();
????????String?hql?
=
?
"
update??User??set?password='gm'?
"
;
????????Query?query?
=
?session.createQuery(hql);
????????query.executeUpdate();
????????tx.commit();
????????HibernateUtil.closeCurrentSession();
????????System.out.println(
"
更新成功!
"
);
????}
????
public
?
void
?deleteUsers()?
????
{
????????Session?session?
=
?HibernateUtil.getCurrentSession();
????????Transaction?tx?
=
?session.beginTransaction();
????????String?hql?
=
?
"
delete??User??where?id=1
"
;
????????Query?query?
=
?session.createQuery(hql);
????????query.executeUpdate();
????????tx.commit();
????????HibernateUtil.closeCurrentSession();
????????System.out.println(
"
刪除成功!
"
);
????}
????
public
?
static
?
void
?main(String[]?args)?
????
{
????????
//
?TODO?Auto-generated?method?stub
????????
new
?HibernateTest().insertUser();
????????
new
?HibernateTest().updateUsers();
????????
new
?HibernateTest().deleteUsers();
????????List?list?
=
?
new
?HibernateTest().getUsers();
????????
for
?(Iterator?iter?
=
?list.iterator();?iter.hasNext();)
????????
{
????????????User?user?
=
?(User)?iter.next();
????????????System.out.println(user.getPassword());
????????}
????}
}
其中使用的hql語句比較初級,大家不要見笑,以后我將做深入的研究。
補充:其實對于更新和刪除并不需要使用hql就可以實現。
將HibernateTest更改如下,同樣可以實現更新和刪除。
import
?java.util.Iterator;
import
?java.util.List;
import
?org.hibernate.HibernateException;
import
?org.hibernate.Query;
import
?org.hibernate.Session;
import
?org.hibernate.Transaction;
import
?model.User;
import
?db.HibernateUtil;
public
?
class
?HibernateTest
{
????
/**?*/
/**
?????*?
@param
?args
?????*?
@throws
?HibernateException
?????
*/
????
public
?
void
?insertUser()?
????
{
????????Session?session?
=
?HibernateUtil.getCurrentSession();
????????Transaction?tx?
=
?session.beginTransaction();
????????User?user?
=
?
new
?User();
????????user.setUsername(
"
lzqdiy
"
);
????????user.setPassword(
"
lzqdiy
"
);
????????session.save(user);
????????tx.commit();
????????HibernateUtil.closeCurrentSession();
????????System.out.println(
"
新增成功!
"
);
????}
????
public
?List?getUsers()?
????
{
????????Session?session?
=
?HibernateUtil.getCurrentSession();
????????Transaction?tx?
=
?session.beginTransaction();
????????String?hql?
=
?
"
select?new?User(password)?from?model.User??where?username=:name
"
;
????????Query?query?
=
?session.createQuery(hql);
????????query.setString(
"
name
"
,?
"
lzqdiy
"
);
????????List?list?
=
?query.list();
????????tx.commit();
????????HibernateUtil.closeCurrentSession();
????????
return
?list;
????}
????
public
?
void
?updateUsers()?
????
{
????????Session?session?
=
?HibernateUtil.getCurrentSession();
????????Transaction?tx?
=
?session.beginTransaction();
????????User?user
=
new
?User();
????????user.setId(
new
?Integer(
1
));
????????user.setUsername(
"
lzqdiy
"
);
????????user.setPassword(
"
gm
"
);
????????session.saveOrUpdate(user);
????????tx.commit();
????????HibernateUtil.closeCurrentSession();
????????System.out.println(
"
更新成功!
"
);
????}
????
public
?
void
?deleteUsers()?
????
{
????????Session?session?
=
?HibernateUtil.getCurrentSession();
????????Transaction?tx?
=
?session.beginTransaction();
????????User?user
=
new
?User();
????????user.setId(
new
?Integer(
1
));
????????session.delete(user);
????????tx.commit();
????????HibernateUtil.closeCurrentSession();
????????System.out.println(
"
刪除成功!
"
);
????}
????
public
?
static
?
void
?main(String[]?args)?
????
{
????????
//
?TODO?Auto-generated?method?stub
????????
new
?HibernateTest().insertUser();
????????
new
?HibernateTest().updateUsers();
????????
new
?HibernateTest().deleteUsers();
????????List?list?
=
?
new
?HibernateTest().getUsers();
????????
for
?(Iterator?iter?
=
?list.iterator();?iter.hasNext();)
????????
{
????????????User?user?
=
?(User)?iter.next();
????????????System.out.println(user.getPassword());
????????}
????}
}
posted on 2007-06-10 21:43
EricWong
閱讀(2262)
評論(1)
編輯
收藏
評論:
#
re: 用hibernate3實現增刪改查 [未登錄] 2007-08-09 15:36 |
haha
頂
回復
更多評論
#
re: 用hibernate3實現增刪改查 2007-09-06 16:15 |
吳楊明
好 在學hibernate 應用
謝謝啦 我的博客 www.aygfsteel.com/coacoa2008
大家一起進步
回復
更多評論
#
re: 用hibernate3實現增刪改查
2007-09-06 16:56 |
吳楊明
"
http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
用hibernate3實現增刪改查
"
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
進入生活博客
印度漂泊
<
2007年6月
>
日
一
二
三
四
五
六
27
28
29
30
31
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
1
2
3
4
5
6
7
留言簿
(44)
給我留言
查看公開留言
查看私人留言
隨筆分類
(120)
Assembly(1)
C&C++ (9)
Hibernate
J2EE(1)
Java(62)
JavaScript
Linux(5)
others(38)
Spring
Sql server(4)
Struts
相冊
人在印度
我愛的車啊
明星相冊
雜7雜8的
收藏夾
(15)
car(1)
english(2)
others(10)
technology(2)
links
flox's blog
linuxforum
Pegy的午夜場
Rock王霏
中印留學生論壇
值得一看的
像"瘋顛婆"一樣的記者
室內設計的一個小才女
我以前的CSDN'S blog
我大學老師的小窩
段紹譯老師
真的是美人如畫
英語聽力狂人
財經高人
搜索
最新評論
1.?re: Java API中文版下載
怎么下載呢?怎么沒有反應
--何偉杰
2.?re: 基于java的權限控制系統設計
評論內容較長,點擊標題查看
--zuidaima
3.?re: 很形象的接口的使用——針對初學者
@中華乞丐
呵呵,通俗易懂,真不錯!
--sir
4.?re: 很形象的接口的使用——針對初學者 [未登錄]
碉堡了
--張
5.?re: Java API中文版下載
非常詳細,全面
--彭勝波
6.?re: 基于java的權限控制系統設計
抱著學習的心理來看,結果越看越看不懂。。。
--zhangyibin8111
7.?re: Java API中文版下載
kankan
--look
8.?re: Java API中文版下載
個級別、你看了就
--猜猜
9.?re: Java API中文版下載
不錯
--張晨
10.?re: Java API中文版下載
不知道
--不知道
閱讀排行榜
1.?Java API中文版下載 (70306)
2.?ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)解決方法(15942)
3.?WAP瀏覽器(模擬器)大全(13787)
4.?msn登錄不了錯誤代碼80048820擴展錯誤代碼 80048412(10709)
5.?基于java的權限控制系統設計(8777)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 EricWong
51La
主站蜘蛛池模板:
西乌珠穆沁旗
|
东山县
|
融水
|
广灵县
|
万荣县
|
神木县
|
将乐县
|
四川省
|
闸北区
|
呼图壁县
|
周宁县
|
随州市
|
华宁县
|
肥乡县
|
浦东新区
|
泰宁县
|
磐安县
|
宁化县
|
葫芦岛市
|
石渠县
|
台安县
|
高雄市
|
贵州省
|
镇赉县
|
灵川县
|
武宁县
|
荃湾区
|
兴国县
|
中卫市
|
蕲春县
|
辽阳县
|
霞浦县
|
东源县
|
姜堰市
|
彝良县
|
乌鲁木齐市
|
利津县
|
遂川县
|
封开县
|
柳江县
|
平昌县
|