10bet网址
MySQL连接器/ J 5.1开发者指南
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 0.6 mb
PDF (A4)- 0.6 mb


13.2事务JDBC访问

您可能想知道如何将事务添加到我们的代码如果我们不直接处理JDBC类。Spring提供了事务管理方案,不仅取代了JDBC事务管理,但也支持声明式事务管理(配置而不是代码)。

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

ALTER TABLE城市引擎= InnoDB;ALTER TABLE国家引擎= InnoDB;ALTER TABLE CountryLanguage引擎= InnoDB;

良好的编程实践强调,春天是接口和实现分离。这意味着我们只能创建一个Java接口和使用这个接口的操作没有任何内部知识的实际实现。我们将让Spring管理的实现和管理实现的事务。

首先创建一个简单的接口:

公共接口Ex3Dao{整数createCity (countryCode字符串名称,字符串,字符串,整数人口);}

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

公共类Ex3DaoImpl实现Ex3Dao{保护数据源的数据源;保护SqlUpdate updateQuery;保护SqlFunction idQuery;countryCode公共整数createCity(字符串名称字符串,字符串,整数人口){updateQuery。更新(新对象[]{名称、countryCode区,人口});返回getLastId ();}保护整数getLastId(){返回idQuery.run ();}}

你可以看到,这里我们只操作抽象查询对象,不直接处理JDBC API。同样,这是完整的实现。将处理所有的事务管理配置。配置开始,我们需要创建一个DAO。

< bean id =“道”类= "代码。Ex3DaoImpl">  ... ... 

现在你需要设置事务配置。你必须做的第一件事是创建事务管理器来管理数据源和规范所需的事务属性方法。

< bean id = " transactionManager " class = " org.springframework.jdbc.datasource。DataSourceTransactionManager " > <属性名=“数据源”ref =“数据源”/ > < /豆> < tx:建议id =“txAdvice事务管理器”=“transactionManager”> < tx:属性> < tx:方法名= " * " / > < / tx:属性> < / tx:建议>

前面的代码创建了一个处理事务的事务管理器提供的数据源。的txAdvice使用事务管理器和属性指定为所有方法创建一个事务。最后你需要应用这个建议与AOP切入点。

< aop:配置> < aop:切入点id = =“daoMethods”表达“执行(* code.Ex3Dao。* (. .)”/ > < aop:顾问advice-ref =“txAdvice”pointcut-ref = " daoMethods " / > < / aop:配置>

这基本上是说,呼吁所有方法Ex3Dao界面将包装在一个事务。利用这一点,你只需要检索从应用程序上下文和调用一个方法实例。

Ex3Dao刀= (Ex3Dao) ctx.getBean(“道”);整数id =刀。createCity(名称、countryCode区、流行);

我们可以从这个验证,没有事务管理发生在我们的Java代码和一切都配置了春天。这是一个非常强大的概念和视为春天的最有益的特性之一。