Java Reference
In-Depth Information
try {
conn = dataSource.getConnection();
conn.setAutoCommit(false);
sqlMapClient.setUserConnection(conn);
Person p =
(Person)sqlMapClient.queryForObject
("getPerson", new Integer(9));
p.setLastName("Smith");
sqlMapClient.update("updatePerson", p);
Department d =
(Department)sqlMapClient.queryForObject
("getDept", new Integer(3));
p.setDepartment(d);
sqlMapClient.update("updatePersonDept", p);
conn.commit();
} finally {
sqlMapClient.setUserConnection(null);
if (conn != null) conn.close();
}
}
The second way is to use
openSession
(Connection)
. This is the preferred
approach, because i
BATIS
can do a better job of resource management. Listing 7.7
shows how this is done with
openSession()
.
Listing 7.7
Custom transaction control with openSession()
public void runStatementsUsingSetUserConnection() {
SqlMapClient sqlMapClient =
SqlMapClientConfig.getSqlMapClient();
Connection conn = null;
SqlMapSession session = null;
try {
conn = dataSource.getConnection();
conn.setAutoCommit(false);
session = sqlMapClient.openSession(conn);
Person p =
(Person)
session
.queryForObject("getPerson",
new Integer(9));
p.setLastName("Smith");
session
.update("updatePerson", p);
Department d =
(Department)
session
.queryForObject
("getDept", new Integer(3));
p.setDepartment(d);
session
.update("updatePersonDept", p);









