diff --git a/doc/reference/src/ado.xml b/doc/reference/src/ado.xml index 4b245fb6..f9b40989 100644 --- a/doc/reference/src/ado.xml +++ b/doc/reference/src/ado.xml @@ -16,7 +16,12 @@ * limitations under the License. */ --> - + Data access using ADO.NET @@ -130,7 +135,7 @@ - + Motivations There are a variety of motivations to create a higher level ADO.NET @@ -348,8 +353,8 @@ thread safe, reusable objects. Finally the Spring.Data.Support namespace is - where you find the IAdoExceptionTransactor - translation functionality and some utility classes. + where you find the IAdoExceptionTransactor translation + functionality and some utility classes. @@ -357,17 +362,16 @@ Spring provides two styles to interact with ADO.NET. The first is a 'template' based approach in which you create an single instance of - AdoTemplate to be used by all your DAO - implementations. Your DAO methods are frequently implemented as a single - method call on the template class as described in detail in the following - section. The other approach a more object-oriented manner that models - database operations as objects. For example, one can encapsulate the - functionality of a database query via an AdoQuery - class and a create/update/delete operation as a - AdoNonQuery class. Stored procedures are also - modelled in this manner via the class - StoredProcedure. To use these classes you inherit - from them and define the details of the operation in the constructor and + AdoTemplate to be used by all your DAO implementations. + Your DAO methods are frequently implemented as a single method call on the + template class as described in detail in the following section. The other + approach a more object-oriented manner that models database operations as + objects. For example, one can encapsulate the functionality of a database + query via an AdoQuery class and a create/update/delete + operation as a AdoNonQuery class. Stored procedures are + also modelled in this manner via the class + StoredProcedure. To use these classes you inherit from + them and define the details of the operation in the constructor and implement an abstract method. This reads very cleanly when looking at DAO method implementation as you can generally see all the details of what is going on. @@ -386,40 +390,38 @@ Introduction to AdoTemplate - The class AdoTemplate is at the heart of - Spring's ADO.NET support. It is based on an Inversion of Control (i.e. - callback) design with the central method 'Execute' - handing you a IDbCommand instance that has - its Connection and Transaction properties set based on the transaction - context of the calling code. All resource management is handled by the - framework, you only need to focus on dealing with the - IDbCommand object. The other methods in - this class build upon this central 'Execute' method to provide you a quick - means to execute common data access scenarios. + The class AdoTemplate is at the heart of Spring's + ADO.NET support. It is based on an Inversion of Control (i.e. callback) + design with the central method 'Execute' handing you a + IDbCommand instance that has its Connection and + Transaction properties set based on the transaction context of the calling + code. All resource management is handled by the framework, you only need + to focus on dealing with the IDbCommand object. The + other methods in this class build upon this central 'Execute' method to + provide you a quick means to execute common data access scenarios. - There are two implementations of AdoTemplate. - The one that uses Generics and is in the namespace - Spring.Data.Generic and the other non-generic - version in Spring.Data. In either case you create an - instance of an AdoTemplate by passing it a + There are two implementations of AdoTemplate. The + one that uses Generics and is in the namespace + Spring.Data.Generic and the other non-generic version + in Spring.Data. In either case you create an instance + of an AdoTemplate by passing it a IDbProvider instance as shown below AdoTemplate adoTemplate = new AdoTemplate(dbProvider); - AdoTemplate is a thread-safe class and as - such a single instance can be used for all data access operations in you + AdoTemplate is a thread-safe class and as such a + single instance can be used for all data access operations in you applications DAOs. AdoTemplate implements an IAdoOperations interface. Although the - IAdoOperations interface is more commonly - used for testing scenarios you may prefer to code against it instead of - the direct class instance. + IAdoOperations interface is more commonly used for + testing scenarios you may prefer to code against it instead of the direct + class instance. If you are using the generic version of AdoTemplate you can access the non-generic version via the property ClassicAdoTemplate. The following two sections show basic usage of the - AdoTemplate 'Execute' API for .NET 1.1 and - 2.0. + AdoTemplate 'Execute' API for .NET 1.1 and 2.0. @@ -428,11 +430,11 @@ The Execute method and its associated callback function/inteface is the basic method upon which all the other - methods in AdoTemplate delegate their work. If - you can not find a suitable 'one-liner' method in - AdoTemplate for your purpose you can always fall - back to the Execute method to perform any - database operation while benefiting from ADO.NET resource management and + methods in AdoTemplate delegate their work. If you + can not find a suitable 'one-liner' method in + AdoTemplate for your purpose you can always fall back + to the Execute method to perform any database + operation while benefiting from ADO.NET resource management and transaction enlistment. This is commonly the case when you are using special provider specific features, such as XML or BLOB support. @@ -464,24 +466,24 @@ anonymous delegate is already has it Connection property set to the corresponding value of the dbProvider instance used to create the template. Furthermore, the Transaction property - of the DbCommand is set based on the - transactional calling context of the code as based on the use of - Spring's transaction management features. Also note the feature of - anonymous delegates to access the variable 'postalCode' which is defined - 'outside' the anonymous delegate implementation. The use of anonymous - delegates is a powerful approach since it allows you to write compact - data access code. If you find that your callback implementation is - getting very long, it may improve code clarity to use an interface based - version of the callback function, i.e. an - ICommandCallback shown below. + of the DbCommand is set based on the transactional + calling context of the code as based on the use of Spring's transaction + management features. Also note the feature of anonymous delegates to + access the variable 'postalCode' which is defined 'outside' the + anonymous delegate implementation. The use of anonymous delegates is a + powerful approach since it allows you to write compact data access code. + If you find that your callback implementation is getting very long, it + may improve code clarity to use an interface based version of the + callback function, i.e. an ICommandCallback shown + below. As you can see, only the most relevant portions of the data access task at hand need to be coded. (Note that in this simple example you would be better off using AdoTemplate's ExecuteScalar method directly. This method is described in the following sections). As mentioned before, the typical usage scenario for the Execute callback would - involve downcasting the passed in DbCommand - object to access specific provider API features. + involve downcasting the passed in DbCommand object to + access specific provider API features. There is also an interface based version of the execute method. The signatures for the delegate and interface are shown below @@ -542,12 +544,11 @@ public interface IDbCommandCallback<T> } Internally the AdoTemplate implementation - delegates to implementations of - IDbCommandCallback so that the 'lowest common - denominator' API is used to have maximum portability. If you - accidentally call Execute<T>(ICommandCallback - action)and the command does not inherit from - DbCommand, an + delegates to implementations of IDbCommandCallback so + that the 'lowest common denominator' API is used to have maximum + portability. If you accidentally call + Execute<T>(ICommandCallback action)and the + command does not inherit from DbCommand, an InvalidDataAccessApiUsageException will be thrown. @@ -567,15 +568,14 @@ public interface IDbCommandCallback<T> AdoTemplate differs from its .NET 2.0 generic counterpart in that - it exposes the interface IDbCommand in - its 'Execute' callback methods and delegate as compared to the abstract - base class DbProvider. Also, since anonymous - delegates are not available in .NET 1.1, the typical usage pattern - requires you to create a explicitly delegate and/or class that - implements the ICommandCallback - interface. Example code to query In .NET 1.1 the 'Northwind' database is - done to determine the number of customers who have a particular postal - code is shown below. + it exposes the interface IDbCommand in its 'Execute' + callback methods and delegate as compared to the abstract base class + DbProvider. Also, since anonymous delegates are not + available in .NET 1.1, the typical usage pattern requires you to create + a explicitly delegate and/or class that implements the + ICommandCallback interface. Example code to query In + .NET 1.1 the 'Northwind' database is done to determine the number of + customers who have a particular postal code is shown below. @@ -707,29 +707,26 @@ public interface ICommandCallback QueryWithResultSetExtractor - Execute a query mapping a result set to an object with an implementation of - the IResultSetExtractor - interface. + the IResultSetExtractor interface. QueryWithResultSetExtractorDelegate - Same as QueryWithResultSetExtractor but using a - ResultSetExtractorDelegate to perform - result set mapping. + ResultSetExtractorDelegate to perform result set + mapping. QueryWithRowCallback - Execute a - query calling an implementation of - IRowCallback for each row in the - result set. + query calling an implementation of IRowCallback + for each row in the result set. QueryWithRowCallbackDelegate - Same as QueryWithRowCallback but calling a - RowCallbackDelegate for each - row. + RowCallbackDelegate for each row. @@ -740,9 +737,8 @@ public interface ICommandCallback QueryWithRowMapperDelegate - Same as - QueryWithRowMapper but using a - RowMapperDelegate to perform result - set row to object mapping. + QueryWithRowMapper but using a RowMapperDelegate + to perform result set row to object mapping. @@ -752,8 +748,8 @@ public interface ICommandCallback QueryForObject - Execute a query mapping the result set to an object using a - IRowMapper. Exception is thrown if - the query does not return exactly one object. + IRowMapper. Exception is thrown if the query does + not return exactly one object. @@ -764,9 +760,8 @@ public interface ICommandCallback QueryWithCommandCreator - Execute a - query with a callback to - IDbCommandCreator to create a - IDbCommand object and using either a IRowMapper or + query with a callback to IDbCommandCreator to + create a IDbCommand object and using either a IRowMapper or IResultSetExtractor to map the result set to an object. One variation lets multiple result set 'processors' be specified to act on multiple result sets and return output parameters. @@ -926,14 +921,14 @@ public interface ICommandCallback LazyInit - Indicates if the IAdoExceptionTranslator should be created on first encounter of an exception from the data provider or when - AdoTemplate is created. Default is true, i.e. - to lazily instantiate. + AdoTemplate is created. Default is true, i.e. to + lazily instantiate. ExceptionTranslator - Gets or sets the - implementation of IAdoExceptionTranslator to - use. If no custom translator is provided, a default + implementation of IAdoExceptionTranslator to use. + If no custom translator is provided, a default ErrorCodeExceptionTranslator is used. @@ -945,13 +940,13 @@ public interface ICommandCallback DataReaderWrapperType - Gets or set the System.Type to use to create an instance of - IDataReaderWrapper for the purpose of - providing extended mapping functionality. Spring provides an - implementation to use as the basis for a mapping strategy that will - map DBNull values to default values based on - the standard IDataReader interface. See the - section custom IDataReader - implementations for more information. + IDataReaderWrapper for the purpose of providing + extended mapping functionality. Spring provides an implementation to + use as the basis for a mapping strategy that will map + DBNull values to default values based on the + standard IDataReader interface. See the section + custom IDataReader implementations + for more information. @@ -968,23 +963,22 @@ public interface ICommandCallback Transaction Management The AdoTemplate is used in conjunction with an implementation of a - IPlatformTransactionManager, which is Spring's - portable transaction management API. This section gives a brief overview - of the transaction managers you can use with AdoTemplate and the details - of how you can retrieve the connection/transaction ADO.NET objects that - are bound to the thread when a transaction starts. Please refer to the - section key abstractions in the - chapter on transactions for more comprehensive introduction to transaction + IPlatformTransactionManager, which is Spring's portable + transaction management API. This section gives a brief overview of the + transaction managers you can use with AdoTemplate and the details of how + you can retrieve the connection/transaction ADO.NET objects that are bound + to the thread when a transaction starts. Please refer to the section key abstractions in the chapter on + transactions for more comprehensive introduction to transaction management. To use local transactions, those with only one transactional resource (i.e. the database) you will typically use AdoPlatformTransactionManager. If you need to mix Hibernate and ADO.NET data access operations within the same local - transaction you should use - HibernatePlatformTransaction manager which is - described more in the section on ORM - transaction management. + transaction you should use HibernatePlatformTransaction + manager which is described more in the section on ORM transaction management. While it is most common to use Spring's transaction management features to avoid the @@ -1008,8 +1002,8 @@ command.Transaction = connectionTxPairToUse.Transaction; If you are using ServiceDomainPlatformTransactionManager or - TxScopePlatformTransactionManager then you can - retrieve the currently executing transaction object via the standard .NET + TxScopePlatformTransactionManager then you can retrieve + the currently executing transaction object via the standard .NET APIs. @@ -1043,11 +1037,11 @@ command.Transaction = connectionTxPairToUse.Transaction; Instead of creating a parameter on one line of code, then setting its type on another and size on another, a builder and parameter interface, IDbParametersBuilder and - IDbParameter respectfully, are provided - so that this declaration process can be condensed. The IDbParameter - support chaining calls to its methods, in effect a simple - language-constrained domain specific language, to be fancy about it. - Here is an example of it in use. + IDbParameter respectfully, are provided so that this + declaration process can be condensed. The IDbParameter support chaining + calls to its methods, in effect a simple language-constrained domain + specific language, to be fancy about it. Here is an example of it in + use. IDbParametersBuilder builder = CreateDbParametersBuilder(); builder.Create().Name("Country").Type(DbType.String).Size(15).Value(country); @@ -1060,9 +1054,9 @@ builder.Create().Name("City").Type(DbType.String).Size(15).Value(city); IDbParameters parameters = builder.GetParameters(); Please note that IDbParameters and - IDbParameter are not part of the BCL, but part of - the Spring.Data.Common namespace. The IDbParameters collection is a - frequent argument to the overloaded methods of AdoTemplate. + IDbParameter are not part of the BCL, but part of the + Spring.Data.Common namespace. The IDbParameters collection is a frequent + argument to the overloaded methods of AdoTemplate. The parameter prefix, i.e. '@' in Sql Server, is not required to be added to the parameter name. The DbProvider is aware of this metadata @@ -1140,34 +1134,47 @@ parameters.Add("City", DbType.String).Value = city; and AdoTemplate will add it automatically if required before execution. + + + Parameter names in SQL text + + While the use of IDbParameters or + IDbParametersBuilder will remove the need for use + to vendor specific parameter prefixes when creating a parameter + collection, @User in Sql SqlSerer vs. :User in Oracle, you still need to + specify the vendor specific parameter prefix in the SQL Text. Portable + SQL in this regard is possible to implement, it is available as a + feature in Spring Java. If you would like such a feature, please raise + an issue. + Custom IDataReader implementations - The passed in implementation of IDataReader - can be customized. This lets you add a strategy for handling null values - to the standard methods in the IDataReader - interface or to provide sub-interface of IDataReader that contains - extended functionality, for example support for default values. In - callback code, i.e. IRowMapper and associated delegate, you would downcast - to the sub-interface to perform processing. + The passed in implementation of IDataReader can + be customized. This lets you add a strategy for handling null values to + the standard methods in the IDataReader interface or to + provide sub-interface of IDataReader that contains extended functionality, + for example support for default values. In callback code, i.e. IRowMapper + and associated delegate, you would downcast to the sub-interface to + perform processing. Spring provides a class to map DBNull values to default values. When reading from a IDataReader there is often the need to - map DBNull values to some default values, i.e. null - or say a magic number such as -1. This is usually done via a ternary - operator which decreases readability and also increases the likelihood of - mistakes. Spring provides an - IDataReaderWrapper interface (which - inherits from the standard IDataReader) so - that you can provide your own implementation of a IDataReader that will - perform DBNull mapping for you in a consistent and non invasive manner to - your result set reading code. A default implementation, + map DBNull values to some default values, i.e. null or + say a magic number such as -1. This is usually done via a ternary operator + which decreases readability and also increases the likelihood of mistakes. + Spring provides an IDataReaderWrapper interface (which + inherits from the standard IDataReader) so that you can + provide your own implementation of a IDataReader that will perform DBNull + mapping for you in a consistent and non invasive manner to your result set + reading code. A default implementation, NullMappingDataReader is provided which you can subclass to customize or simply implement the - IDataReaderWrapper interface directly. This - interface is shown below + IDataReaderWrapper interface directly. This interface + is shown below public interface IDataReaderWrapper : IDataReader { @@ -1180,11 +1187,11 @@ parameters.Add("City", DbType.String).Value = city; } All of AdoTemplates callback interfaces/delegates that have an - IDataReader as an argument are wrapped with - a IDataReaderWrapper if the AdoTemplate has - been configured with one via its - DataReaderWrapperType property. Your - implementation should support a zero-arg constructor. + IDataReader as an argument are wrapped with a + IDataReaderWrapper if the AdoTemplate has been + configured with one via its DataReaderWrapperType + property. Your implementation should support a zero-arg + constructor. Frequently you will use a common mapper for DBNull across your application so only one instance of AdoTemplate and @@ -1566,8 +1573,8 @@ public delegate object ResultSetExtractorDelegate(IDataReader reader);To process multiple result sets specify a list of named result set processors,( i.e. IResultSetExtractor, - IRowCallback, or IRowMapper). - This method is shown below + IRowCallback, or IRowMapper). This + method is shown below @@ -1577,8 +1584,8 @@ public delegate object ResultSetExtractorDelegate(IDataReader reader); The list must contain objects of the type - Spring.Data.Support.NamedResultSetProcessor. This - is the class responsible for associating a name with a result set + Spring.Data.Support.NamedResultSetProcessor. This is + the class responsible for associating a name with a result set processor. The constructors are listed below. public class NamedResultSetProcessor { @@ -1694,8 +1701,7 @@ public delegate object ResultSetExtractorDelegate(IDataReader reader); - Where IDataAdapterCallback is defined - as + Where IDataAdapterCallback is defined as public interface IDataAdapterCallback { @@ -1739,10 +1745,9 @@ public delegate T DataAdapterDelegate<T>(IDbDataAdapter dataAdapter);DataTables DataTable operations are available on the class - Spring.Data.Core.AdoTemplate. If you are using - the generic version, - Spring.Data.Generic.AdoTemplate, you can access - these methods through the property + Spring.Data.Core.AdoTemplate. If you are using the + generic version, Spring.Data.Generic.AdoTemplate, you + can access these methods through the property ClassicAdoTemplate, which returns the non-generic version of AdoTemplate. DataTable operations available fall into the general family of methods with 3-5 overloads per method. @@ -1785,10 +1790,9 @@ public delegate T DataAdapterDelegate<T>(IDbDataAdapter dataAdapter);DataSets DataSet operations are available on the class - Spring.Data.Core.AdoTemplate. If you are using - the generic version, - Spring.Data.Generic.AdoTemplate, you can access - these methods through the property + Spring.Data.Core.AdoTemplate. If you are using the + generic version, Spring.Data.Generic.AdoTemplate, you + can access these methods through the property ClassicAdoTemplate, which returns the non-generic version of AdoTemplate. DataSet operations available fall into the following family of methods with 3-5 overloads per method. @@ -2020,10 +2024,10 @@ public static void ApplyConnectionAndTx(object typedDataSetAdapter, IDbProvider amongst some of the Spring developers that the various RDBMS operation classes described below (with the exception of the StoredProcedure class) can often be - replaced with straight AdoTemplate calls... - often it is simpler to use and plain easier to read a DAO method that - simply calls a method on a AdoTemplate direct - (as opposed to encapsulating a query as a full-blown class). + replaced with straight AdoTemplate calls... often + it is simpler to use and plain easier to read a DAO method that simply + calls a method on a AdoTemplate direct (as opposed + to encapsulating a query as a full-blown class). It must be stressed however that this is just a view... if you feel that you are getting @@ -2034,27 +2038,25 @@ public static void ApplyConnectionAndTx(object typedDataSetAdapter, IDbProvider AdoQuery - AdoQuery is a reusable, threadsafe class - that encapsulates an SQL query. Subclasses must implement the + AdoQuery is a reusable, threadsafe class that + encapsulates an SQL query. Subclasses must implement the NewRowMapper(..) method to provide a - IRowMapper instance that can create one - object per row obtained from iterating over the - IDataReader that is created during the - execution of the query. The AdoQuery class is - rarely used directly since the MappingAdoQuery - subclass provides a much more convenient implementation for mapping rows - to .NET classes. Another implementations that extends - AdoQuery is + IRowMapper instance that can create one object per + row obtained from iterating over the IDataReader that + is created during the execution of the query. The + AdoQuery class is rarely used directly since the + MappingAdoQuery subclass provides a much more + convenient implementation for mapping rows to .NET classes. Another + implementations that extends AdoQuery is MappingadoQueryWithParameters (See SDK docs for details). The AdoNonQuery class encapsulates an IDbCommand 's ExecuteNonQuery method functionality. Like the - AdoQuery object, an - AdoNonQuery object is reusable, and like all - AdoOperation classes, an - AdoNonQuery can have parameters and is defined in - SQL. This class provides two execute methods + AdoQuery object, an AdoNonQuery + object is reusable, and like all AdoOperation + classes, an AdoNonQuery can have parameters and is + defined in SQL. This class provides two execute methods @@ -2098,13 +2100,12 @@ public static void ApplyConnectionAndTx(object typedDataSetAdapter, IDbProvider MappingAdoQuery - MappingAdoQuery is a reusable query in - which concrete subclasses must implement the abstract + MappingAdoQuery is a reusable query in which + concrete subclasses must implement the abstract MapRow(..) method to convert each row of the - supplied IDataReader into an object. Find - below a brief example of a custom query that maps the data from a - relation to an instance of the Customer - class. + supplied IDataReader into an object. Find below a + brief example of a custom query that maps the data from a relation to an + instance of the Customer class. public class TestObjectQuery : MappingAdoQuery { @@ -2132,11 +2133,10 @@ public static void ApplyConnectionAndTx(object typedDataSetAdapter, IDbProvider The AdoNonQuery class encapsulates an IDbCommand 's ExecuteNonQuery method functionality. Like the - AdoQuery object, an - AdoNonQuery object is reusable, and like all - AdoOperation classes, an - AdoNonQuery can have parameters and is defined in - SQL. This class provides two execute methods + AdoQuery object, an AdoNonQuery + object is reusable, and like all AdoOperation + classes, an AdoNonQuery can have parameters and is + defined in SQL. This class provides two execute methods @@ -2222,23 +2222,22 @@ public static void ApplyConnectionAndTx(object typedDataSetAdapter, IDbProvider - Each of these methods returns an - IDictionary that contains the output parameters - and/or any results from Spring's object mapping framework. The arguments - to these methods can be a variable length argument list, in which case - the order must match the parameter order of the stored procedure. If the - argument is an IDictionary it contains parameter key/value pairs. Return - values from stored procedures are contained under the key - "RETURN_VALUE". + Each of these methods returns an IDictionary + that contains the output parameters and/or any results from Spring's + object mapping framework. The arguments to these methods can be a + variable length argument list, in which case the order must match the + parameter order of the stored procedure. If the argument is an + IDictionary it contains parameter key/value pairs. Return values from + stored procedures are contained under the key + "RETURN_VALUE". The standard in/out parameters for the stored procedure can be set programmatically by adding to the parameter collection exposed by the property DeclaredParameters. For each result sets that is returned by the stored procedures you can registering either an - IResultSetExtractor, - IRowCallback, or - IRowMapper by name, which is used later to - extract the mapped results from the returned + IResultSetExtractor, IRowCallback, + or IRowMapper by name, which is used later to extract + the mapped results from the returned IDictionary. Lets take a look at an example. The following stored procedure @@ -2279,10 +2278,10 @@ public static void ApplyConnectionAndTx(object typedDataSetAdapter, IDbProvider DeriveParameters(). - The StoredProcedure class is threadsafe - once 'compiled', an act which is usually done in the constructor. This - sets up the cache of database parameters that can be used on each call - to Query or QueryByNamedParam. The implementation of + The StoredProcedure class is threadsafe once + 'compiled', an act which is usually done in the constructor. This sets + up the cache of database parameters that can be used on each call to + Query or QueryByNamedParam. The implementation of IRowMapper that is used to extract the business objects is 'registered' with the class and then later retrieved by name as a fictional output parameter. You may also register @@ -2321,4 +2320,4 @@ public static void ApplyConnectionAndTx(object typedDataSetAdapter, IDbProvider distribution. - \ No newline at end of file + diff --git a/doc/reference/src/dbprovider.xml b/doc/reference/src/dbprovider.xml index dcc6e19c..24cc0a31 100644 --- a/doc/reference/src/dbprovider.xml +++ b/doc/reference/src/dbprovider.xml @@ -358,7 +358,7 @@ provider="System.Data.SqlClient" connectionString="Data Source=(local);Database=Spring;User ID=springqa;Password=springqa;Trusted_Connection=False"/> - <object id="adoTemplate" type="Spring.Data.AdoTemplate, Spring.Data"> + <object id="adoTemplate" type="Spring.Data.Core.AdoTemplate, Spring.Data"> <property name="DbProvider" ref="DbProvider"/> </object> @@ -441,7 +441,7 @@ provider="System.Data.SqlClient" connectionString="${db.datasource};Database=${db.database};User ID=${db.user};Password=${db.password};Trusted_Connection=False"/> - <object id="adoTemplate" type="Spring.Data.AdoTemplate, Spring.Data"> + <object id="adoTemplate" type="Spring.Data.Core.AdoTemplate, Spring.Data"> <property name="DbProvider" ref="DbProvider"/> </object> diff --git a/doc/reference/src/transaction.xml b/doc/reference/src/transaction.xml index 8f95046c..992a3f72 100644 --- a/doc/reference/src/transaction.xml +++ b/doc/reference/src/transaction.xml @@ -341,7 +341,7 @@ connectionString="Data Source=(local);Database=Spring;User ID=springqa;Password=springqa;Trusted_Connection=False"/> <object id="TransactionManager" - type="Spring.Data.AdoPlatformTransactionManager, Spring.Data"> + type="Spring.Data.Core.AdoPlatformTransactionManager, Spring.Data"> <property name="DbProvider" ref="DbProvider"/> </object> @@ -354,7 +354,7 @@ just as easily, as shown in the following example <object id="TransactionManager" - type="Spring.Data.TxScopeTransactionManager, Spring.Data"> + type="Spring.Data.Core.TxScopeTransactionManager, Spring.Data"> </object> Similarly for the HibernateTransactionManager as shown in the @@ -758,7 +758,7 @@ mgr.DeleteTwoTestObjects("Jack", "Jill"); connectionString="Data Source=(local);Database=Spring;User ID=springqa;Password=springqa;Trusted_Connection=False"/> <object id="transactionManager" - type="Spring.Data.AdoPlatformTransactionManager, Spring.Data"> + type="Spring.Data.Core.AdoPlatformTransactionManager, Spring.Data"> <property name="DbProvider" ref="DbProvider"/> </object> @@ -976,7 +976,7 @@ mgr.DeleteTwoTestObjects("Jack", "Jill"); connectionString="Data Source=(local);Database=Spring;User ID=springqa;Password=springqa;Trusted_Connection=False"/> <object id="transactionManager" - type="Spring.Data.AdoPlatformTransactionManager, Spring.Data"> + type="Spring.Data.Core.AdoPlatformTransactionManager, Spring.Data"> <property name="DbProvider" ref="DbProvider"/> </object>