10bet网址
MySQL Connector/J 8.0开发人员指南
相关文件10bet官方网站 下载本手册
PDF(美国Ltr)-0.7兆
PDF(A4)-0.7兆
HTML下载(TGZ)-141.0千字节
HTML下载(Zip)-160.5千字节


14.2事务性JDBC访问

Spring允许我们在代码中添加事务,而不必直接处理JDBC类。为此,Spring提供了一个事务管理包,它不仅取代了JDBC事务管理,而且还支持声明性事务管理(配置而不是代码)。

要使用事务数据库访问,我们需要更改世界数据库中表的存储引擎。下载的脚本显式创建不支持事务语义的MyISAM表。InnoDB存储引擎确实支持事务,这就是我们将要使用的。我们可以使用以下语句更改存储引擎。

ALTER TABLE City ENGINE=InnoDB;ALTER TABLE Country ENGINE=InnoDB;ALTER TABLE CountryLanguage ENGINE=InnoDB;

Spring强调的一个好的编程实践是分离接口和实现。这意味着我们可以创建一个Java接口,并且只使用这个接口上的操作,而不需要任何关于实际实现的内部知识。我们将让Spring管理实现,并用它来管理实现的事务。

首先创建一个简单的界面:

公共接口Ex3Dao{Integer createCity(String name,String countryCode,String district,Integer population);}

这个接口包含一个方法,它将在数据库中创建一个新的城市记录并返回新记录的id。接下来需要创建此接口的实现。

公共类Ex3DaoImpl实现Ex3Dao{protecteddatasource DataSource;受保护的SqlUpdate更新库;受保护的SqlFunction idQuery;public Integer createCity(String name,String countryCode,String district,Integer population){updateQuery.update(new Object[]{name,countryCode,district,population});return getLastId();}受保护整数getLastId(){return idQuery.run();}}

您可以看到,这里我们只对抽象查询对象进行操作,不直接处理jdbcapi。而且,这是完整的实现。我们的所有事务管理都将在配置中处理。为了开始配置,我们需要创建DAO。

现在我们需要设置事务配置。我们必须做的第一件事是创建事务管理器来管理数据源,并指定数据源需要哪些事务属性方法。

前面的代码创建了一个事务管理器,用于处理提供给它的数据源的事务。这个txAdvice公司使用此事务管理器和指定的属性为所有方法创建事务。最后,我们需要用AOP切入点来应用这个建议。

这基本上是说Ex3Dao公司接口将包装在事务中。要利用它,我们只需检索从应用程序上下文调用实例。

Ex3Dao dao=(Ex3Dao)ctx.getBean(“dao”);Integer id=dao.createCity(名称、国家代码、地区、pop);

我们可以由此验证,在我们的Java代码中没有事务管理发生,而且都是用Spring配置的。这是一个非常强大的概念,被认为是Spring最有益的特性之一。