diff --git a/src/reference/docbook/jdbc.xml b/src/reference/docbook/jdbc.xml
index e3b3d7f03c4..f4af0e3b233 100644
--- a/src/reference/docbook/jdbc.xml
+++ b/src/reference/docbook/jdbc.xml
@@ -159,19 +159,12 @@
parameters for an SQL statement.
-
- SimpleJdbcTemplate combines
- the most frequently used operations of JdbcTemplate and
- NamedParameterJdbcTemplate.
-
-
SimpleJdbcInsert and
SimpleJdbcCall optimize database metadata to limit the
amount of necessary configuration. This approach simplifies coding
so that you only need to provide the name of the table or procedure
- and provide a map of parameters matching the column names.
+ and provide a map of parameters matching the column names.
This only works if the database provides adequate metadata. If the
database doesn't provide this metadata, you will have to provide
explicit configuration of the parameters.
@@ -201,8 +194,7 @@ TR: OK. I removed the sentence since it isn;t entirely accurate. The implementat
contains the JdbcTemplate class and its various
callback interfaces, plus a variety of related classes. A subpackage
named org.springframework.jdbc.core.simple contains
- the SimpleJdbcTemplate class and the related
- SimpleJdbcInsert and
+ the SimpleJdbcInsert and
SimpleJdbcCall classes. Another subpackage named
org.springframework.jdbc.core.namedparam contains the
NamedParameterJdbcTemplate class and the related
@@ -434,8 +426,6 @@ private static final class ActorMapper implements RowMapper<Actor> {
A common practice when using the
JdbcTemplate class (and the associated SimpleJdbcTemplate
- and NamedParameterJdbcTemplate
classes) is to configure a DataSource
in your Spring configuration file, and then dependency-inject that
@@ -693,107 +683,6 @@ public int countOfActors(Actor exampleActor) {
of an application.
-
- SimpleJdbcTemplate
-
- The SimpleJdbcTemplate class wraps the
- classic JdbcTemplate and leverages Java 5
- language features such as varargs and autoboxing.
-
-
- In Spring 3.0, the original JdbcTemplate
- also supports Java 5-enhanced syntax with generics and varargs.
- However, the SimpleJdbcTemplate provides a
- simpler API that works best when you do not need access to all the
- methods that the JdbcTemplate offers. Also, because the
- SimpleJdbcTemplate was designed for Java 5, it
- has more methods that take advantage of varargs due to different
- ordering of the parameters.
-
-
- The value-add of the SimpleJdbcTemplate
- class in the area of syntactic-sugar is best illustrated with a
- before-and-after example. The next code snippet shows data access code
- that uses the classic JdbcTemplate, followed by a
- code snippet that does the same job with the
- SimpleJdbcTemplate.
-
- // classic JdbcTemplate-style...
-private JdbcTemplate jdbcTemplate;
-
-public void setDataSource(DataSource dataSource) {
- this.jdbcTemplate = new JdbcTemplate(dataSource);
-}
-
-public Actor findActor(String specialty, int age) {
-
- String sql = "select id, first_name, last_name from T_ACTOR" +
- " where specialty = ? and age = ?";
-
- RowMapper<Actor> mapper = new RowMapper<Actor>() {
- public Actor mapRow(ResultSet rs, int rowNum) throws SQLException {
- Actor actor = new Actor();
- actor.setId(rs.getLong("id"));
- actor.setFirstName(rs.getString("first_name"));
- actor.setLastName(rs.getString("last_name"));
- return actor;
- }
- };
-
-
- // notice the wrapping up of the arguments in an array
- return (Actor) jdbcTemplate.queryForObject(sql, new Object[] {specialty, age}, mapper);
-}
-
- Here is the same method, with the
- SimpleJdbcTemplate.
-
- // SimpleJdbcTemplate-style...
-private SimpleJdbcTemplate simpleJdbcTemplate;
-
-public void setDataSource(DataSource dataSource) {
- this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
-}
-
-public Actor findActor(String specialty, int age) {
-
- String sql = "select id, first_name, last_name from T_ACTOR" +
- " where specialty = ? and age = ?";
- RowMapper<Actor> mapper = new RowMapper<Actor>() {
- public Actor mapRow(ResultSet rs, int rowNum) throws SQLException {
- Actor actor = new Actor();
- actor.setId(rs.getLong("id"));
- actor.setFirstName(rs.getString("first_name"));
- actor.setLastName(rs.getString("last_name"));
- return actor;
- }
- };
-
- // notice the use of varargs since the parameter values now come
- // after the RowMapper parameter
- return this.simpleJdbcTemplate.queryForObject(sql, mapper, specialty, age);
-}
-
- See for guidelines on
- how to use the SimpleJdbcTemplate class in the
- context of an application.
-
-
- The SimpleJdbcTemplate class only offers
- a subset of the methods exposed on the
- JdbcTemplate class. If you need to use a method
- from the JdbcTemplate that is not defined on
- the SimpleJdbcTemplate, you can always access
- the underlying JdbcTemplate by calling the
- getJdbcOperations() method on the
- SimpleJdbcTemplate, which then allows you to
- invoke the method that you want. The only downside is that the methods
- on the JdbcOperations interface are not
- generic, so you are back to casting and so on.
-
-
-
SQLExceptionTranslator
@@ -1370,9 +1259,7 @@ dataSource.setPassword("");
Most JDBC drivers provide improved performance if you batch multiple
calls to the same prepared statement. By grouping updates into batches you
- limit the number of round trips to the database. This section covers batch
- processing using both the JdbcTemplate and the
- SimpleJdbcTemplate.
+ limit the number of round trips to the database.
Basic batch operations with the JdbcTemplate
@@ -1579,11 +1466,11 @@ TR: Revised, please review.-->For this example, the initializing method is the
you will see examples of multiple ones later.
public class JdbcActorDao implements ActorDao {
- private SimpleJdbcTemplate simpleJdbcTemplate;
+ private JdbcTemplate jdbcTemplate;
private SimpleJdbcInsert insertActor;
public void setDataSource(DataSource dataSource) {
- this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
this.insertActor =
new SimpleJdbcInsert(dataSource).withTableName("t_actor");
}
@@ -1618,11 +1505,11 @@ TR: Revised, please review.-->For this example, the initializing method is the
usingGeneratedKeyColumns method.
public class JdbcActorDao implements ActorDao {
- private SimpleJdbcTemplate simpleJdbcTemplate;
+ private JdbcTemplate jdbcTemplate;
private SimpleJdbcInsert insertActor;
public void setDataSource(DataSource dataSource) {
- this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
this.insertActor =
new SimpleJdbcInsert(dataSource)
.withTableName("t_actor")
@@ -1658,11 +1545,11 @@ TR: Revised, please review.-->For this example, the initializing method is the
column names with the usingColumns method:public class JdbcActorDao implements ActorDao {
- private SimpleJdbcTemplate simpleJdbcTemplate;
+ private JdbcTemplate jdbcTemplate;
private SimpleJdbcInsert insertActor;
public void setDataSource(DataSource dataSource) {
- this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
this.insertActor =
new SimpleJdbcInsert(dataSource)
.withTableName("t_actor")
@@ -1697,11 +1584,11 @@ TR: Revised, please review.-->For this example, the initializing method is the
to extract the parameter values. Here is an example:public class JdbcActorDao implements ActorDao {
- private SimpleJdbcTemplate simpleJdbcTemplate;
+ private JdbcTemplate jdbcTemplate;
private SimpleJdbcInsert insertActor;
public void setDataSource(DataSource dataSource) {
- this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
this.insertActor =
new SimpleJdbcInsert(dataSource)
.withTableName("t_actor")
@@ -1721,11 +1608,11 @@ TR: Revised, please review.-->For this example, the initializing method is the
can be chained.public class JdbcActorDao implements ActorDao {
- private SimpleJdbcTemplate simpleJdbcTemplate;
+ private JdbcTemplate jdbcTemplate;
private SimpleJdbcInsert insertActor;
public void setDataSource(DataSource dataSource) {
- this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
this.insertActor =
new SimpleJdbcInsert(dataSource)
.withTableName("t_actor")
@@ -1786,11 +1673,11 @@ END;The in_id parameter contains the
procedure.public class JdbcActorDao implements ActorDao {
- private SimpleJdbcTemplate simpleJdbcTemplate;
+ private JdbcTemplate jdbcTemplate;
private SimpleJdbcCall procReadActor;
public void setDataSource(DataSource dataSource) {
- this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
this.procReadActor =
new SimpleJdbcCall(dataSource)
.withProcedureName("read_actor");
@@ -2004,11 +1891,11 @@ END;
method.
public class JdbcActorDao implements ActorDao {
- private SimpleJdbcTemplate simpleJdbcTemplate;
+ private JdbcTemplate jdbcTemplate;
private SimpleJdbcCall funcGetActorName;
public void setDataSource(DataSource dataSource) {
- this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.setResultsMapCaseInsensitive(true);
this.funcGetActorName =
@@ -2062,11 +1949,9 @@ END;To call this procedure you declare the
newInstance method.public class JdbcActorDao implements ActorDao {
- private SimpleJdbcTemplate simpleJdbcTemplate;
private SimpleJdbcCall procReadAllActors;
public void setDataSource(DataSource dataSource) {
- this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.setResultsMapCaseInsensitive(true);
this.procReadAllActors =
@@ -2679,7 +2564,7 @@ clobReader.close();]]>
or you need to generate the SQL string dynamically once you know how
many placeholders are required. The named parameter support provided in
the NamedParameterJdbcTemplate and
- SimpleJdbcTemplate takes the latter approach.
+ JdbcTemplate takes the latter approach.
Pass in the values as a java.util.List of
primitive objects. This list will be used to insert the required
placeholders and pass in the values during the statement