为了生活而生活
BlogJava
首页
新随笔
联系
聚合
管理
随笔 - 3 文章 - 1 trackbacks - 0
<
2024年12月
>
日
一
二
三
四
五
六
24
25
26
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
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔档案
2008年2月 (1)
2007年4月 (1)
2007年3月 (1)
文章分类
ActiveMQ(1)
ajax(1)
eclipse(1)
hibernate(3)
java(2)
spring(4)
struts(1)
文章档案
2009年7月 (1)
2008年4月 (2)
2008年2月 (1)
2007年12月 (1)
2007年4月 (2)
2007年3月 (5)
搜索
最新评论
1. re: 不好的项目演示
虽然项目演示失务,但我相信你的项目是最成功的,因为你的态度,你的聪明.
You are NO.1! my lover
--roy117
阅读排行榜
1. StringUtils (393)
2. 不好的项目演示(256)
3. 快速的一年(140)
评论排行榜
1. 不好的项目演示(1)
2. StringUtils (0)
3. 快速的一年(0)
转 Spring+Hibernate配置事务
<?
xml version="1.0" encoding="UTF-8"
?>
<
beans
xmlns
="http://www.springframework.org/schema/beans"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
>
<
bean
id
="dataSource"
class
="org.apache.commons.dbcp.BasicDataSource"
>
<
property
name
="driverClassName"
>
<
value
>
com.microsoft.jdbc.sqlserver.SQLServerDriver
</
value
>
</
property
>
<
property
name
="url"
>
<
value
>
jdbc:microsoft:sqlserver://localhost:1433
</
value
>
</
property
>
<
property
name
="username"
>
<
value
>
sa
</
value
>
</
property
>
</
bean
>
<
bean
id
="sessionFactory"
class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
>
<
property
name
="dataSource"
>
<
ref
bean
="dataSource"
/>
</
property
>
<
property
name
="hibernateProperties"
>
<
props
>
<
prop
key
="hibernate.dialect"
>
org.hibernate.dialect.SQLServerDialect
</
prop
>
<
prop
key
="hibernate.show_sql"
>
true
</
prop
>
</
props
>
</
property
>
<
property
name
="mappingResources"
>
<
list
>
<
value
>
beans/Users.hbm.xml
</
value
>
</
list
>
</
property
>
</
bean
>
<
bean
id
="transactionManager"
class
="org.springframework.orm.hibernate3.HibernateTransactionManager"
>
<
property
name
="sessionFactory"
>
<
ref
local
="sessionFactory"
/>
</
property
>
</
bean
>
<
bean
id
="UsersDAO"
class
="beans.UsersDAO"
>
<
property
name
="sessionFactory"
>
<
ref
bean
="sessionFactory"
/>
</
property
>
</
bean
>
<
bean
id
="userDAOProxy"
class
="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
>
<
property
name
="transactionManager"
>
<
ref
local
="transactionManager"
/>
</
property
>
<!--
指定直接对类进行代理,将属性proxyTargetClass指定为true(默认是false)
-->
<
property
name
="proxyTargetClass"
value
="true"
/>
<
property
name
="target"
>
<
ref
local
="UsersDAO"
/>
</
property
>
<
property
name
="transactionAttributes"
>
<
props
>
<!--
key表示匹配DAO中的方法名,例如:save*表示所有前缀为save的方法
-->
<
prop
key
="save*"
>
PROPAGATION_REQUIRED
</
prop
>
<
prop
key
="find*"
>
PROPAGATION_REQUIRED,readOnly
</
prop
>
<
prop
key
="delete*"
>
PROPAGATION_REQUIRED
</
prop
>
<
prop
key
="update*"
>
PROPAGATION_REQUIRED
</
prop
>
</
props
>
</
property
>
</
bean
>
</
beans
>
<!--
PROPAGATION_REQUIRED 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY 支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER 以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
-->
UsersDAO
package
beans;
import
java.util.List;
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
import
org.hibernate.LockMode;
import
org.marker.spring.MyHibernateDao;
import
org.springframework.context.ApplicationContext;
public
class
UsersDAO
extends
MyHibernateDao
implements
UsersInterface
...
{
private
static
final
Log log
=
LogFactory.getLog(UsersDAO.
class
);
public
static
final
String NAME
=
"
name
"
;
public
static
final
String PWD
=
"
pwd
"
;
public
void
save(Users transientInstance)
...
{
log.debug(
"
saving Users instance
"
);
try
...
{
getHibernateTemplate().save(transientInstance);
log.debug(
"
save successful
"
);
}
catch
(RuntimeException re)
...
{
log.error(
"
save failed
"
, re);
throw
re;
}
}
public
void
delete(Users persistentInstance)
...
{
log.debug(
"
deleting Users instance
"
);
try
...
{
getHibernateTemplate().delete(persistentInstance);
log.debug(
"
delete successful
"
);
}
catch
(RuntimeException re)
...
{
log.error(
"
delete failed
"
, re);
throw
re;
}
}
public
Users findById(java.lang.Integer id)
...
{
log.debug(
"
getting Users instance with id:
"
+
id);
try
...
{
Users instance
=
(Users) getHibernateTemplate().get(
"
beans.Users
"
,
id);
return
instance;
}
catch
(RuntimeException re)
...
{
log.error(
"
get failed
"
, re);
throw
re;
}
}
public
void
update(Users user)
...
{
try
...
{
getHibernateTemplate().update(user);
log.debug(
"
update successful
"
);
}
catch
(RuntimeException re)
...
{
log.error(
"
update failed
"
,re);
}
}
}
UsersInterface
package
beans;
public
interface
UsersInterface
...
{
void
update(Users user);
}
JUnit单元测试
package
test;
import
junit.framework.TestCase;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
import
beans.Users;
import
beans.UsersDAO;
public
class
UsersDAOTest
extends
TestCase
...
{
private
ApplicationContext context;
private
UsersDAO dao;
protected
void
setUp()
throws
Exception
...
{
context
=
new
ClassPathXmlApplicationContext(
"
applicationContext.xml
"
);
dao
=
(UsersDAO) context.getBean(
"
userDAOProxy
"
);
System.out.println(
"
%%%%% 单元测试开始 %%%%%
"
);
}
protected
void
tearDown()
throws
Exception
...
{
System.out.println(
"
%%%%% 单元测试结束 %%%%%
"
);
}
public
void
testSave()
...
{
Users user
=
new
Users();
user.setName(
"
777
"
);
user.setPwd(
"
888
"
);
dao.save(user);
}
public
void
testDelete()
...
{
Users user
=
new
Users();
user.setId(
28
);
dao.delete(user);
}
public
void
testFindById()
...
{
Users user
=
dao.findById(
26
);
assertNull(user.getName(), user.getId());
}
public
void
testUpdate()
...
{
Users user
=
new
Users();
user.setId(
22
);
user.setName(
"
654321
"
);
user.setPwd(
"
999999
"
);
dao.update(user);
}
}
posted on 2008-04-01 17:36
terryliu
阅读(273)
评论(0)
编辑
收藏
所属分类:
spring
、
hibernate
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
转 Spring提供的Hibernate申明式事务管理有两种办法
转 Spring+Hibernate配置事务
Spring中bean的基本xml配置
Spring控制反转(IoC)的理解