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
阅读(2250)
评论(1)
编辑
收藏
评论:
#
re: 用hibernate3实现增删改查 [未登录] 2007-08-09 15:36 |
haha
顶
回复
更多评论
#
re: 用hibernate3实现增删改查 2007-09-06 16:15 |
吴杨明
好 在学hibernate 应用
谢谢啦 我的博客 www.blogjava.net/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新闻
知识库
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中文版下载 (70248)
2. ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)解决方法(15921)
3. WAP浏览器(模拟器)大全(13767)
4. msn登录不了错误代码80048820扩展错误代码 80048412(10694)
5. 基于java的权限控制系统设计(8756)