import javax.sql.DataSource;
import org.springframework.jdbc.core.*;
import org.springframework.transaction.*;
import org.springframework.dao.*;
public class bookDAO{
private DataSource dataSource;//
依赖注入
dataSource
,管理数据库
private PlatformTransationManager transactionManager;//
依赖注入管理事务
public void setDataSource(DataSource dataSource){
this.dataSource=dataSource;
}
public void setTransactionManager(PlatformTransationManager transactionManager){
this. transactionManager= transactionManager;
}
public int create(String msg){
①
/*TransactionTemplate transactionTemplate=new TransactionTemplate(transactionManager);
Object result=
transactionTemplate.execute
(
new TransactionCallback()
{
public Object doInTransaction(TransactionStatus status)
{
return resultObject;
}
}
)*/
②
/*DefaultTransactionDefinition def=new DefaultTransactionDefinition();
TransactionStatus status=transactionManager.getTransaction(def);
try
{
JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
jdbcTemplate.update(“INSERT INTO book VALUES(1,’gf’,’Mastering Spring’)”);
}
catch(DataAccessException ex)
{
transactionzManager.rollback(status);
throw ex;
}
finally
{
transactionManager.commit(status);
}
*/
//
使用下面的代码替换上面注释掉的部分
JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
jdbcTemplate.update(“INSERT INFO book
VALUES(1,’gf’,’Mastering Spring’)”);
/
/
与
②
相比,此段代码省去了
commit
和
rollback
事务处理语句;与
①
相比,不必实现
TransactionCallback
接口
}
}