Java Reference
In-Depth Information
returnValue.add(sr);
}
return returnValue;
} catch (GoogleSearchFault googleSearchFault) {
throw new DaoException(googleSearchFault);
}
}
}
The Google
API
is very similar to the
DAO
interface, which is no surprise, but it
requires a key to work. This is not a problem in our example, because we just
hardcoded the key into our implementation. In a production application, you
would want something better than that, perhaps providing a way for you to use a
user-specific key instead of a shared key.
This shows another limitation of the i
BATIS
DAO
layer. Because it cannot pro-
vide multiple instances of a
DAO
class and can only use the default constructor,
making this
DAO
work the way we want it to will require that we jump through
some extra hoops.
In the next section, we look at how to use the Spring framework to make a
more capable
DAO
layer that allows us to perform some pretty advanced tricks
with configuration.
11.3 Using the Spring DAO
There are many different ways that you could use the Spring framework in the
data access layer of your application that do not have anything to do with i
BATIS
.
In this section, you'll learn how to use Spring's support for i
BATIS
to build a data
access layer.
11.3.1
Writing the code
The Spring framework supports i
BATIS
using a template pattern for the data
access objects, meaning that you start with an existing Spring class (
SqlMapClient-
Template
) and extend it for your
DAO
. Using this technique, our
AccountDao
implementation would look like listing 11.6 using Spring.
Listing 11.6
Spring version of our SQL Maps Account DAO
public class AccountDaoImplSpring
extends SqlMapClientTemplate
implements AccountDao
{
public Integer insert(Account account) {
return (Integer) insert("Account.insert", account);



