--- Andy Cheng <[EMAIL PROTECTED]> wrote:
> Hi, currently I have something like the code below on every action, is
> this the normal way of getting the connection? And how would normal
> people do if they want to make some data access objects, which contain
> all the methods like insert, select etc, while the Action class will
> purely do logic, for example only contain this kind of statements:
> HashMap hmResult = dataAccess.getAllClients(); Thanks.
Most apps lookup the DataSource from JNDI. You configure the DataSource
in your container instead of struts-config.xml.
>
> public ActionForward perform(ActionMapping mapping, ActionForm form,
> HttpServletRequest request, HttpServletResponse response) {
> ServletContext context = servlet.getServletContext();
> try {
> DataSource dataSource =
> (DataSource)context.getAttribute(Action.DATA_SOURCE_KEY);
> Connection conn = dataSource.getConnection();
> Statement stmt = conn.createStatement();
> ResultSet rs = stmt.executeQuery("SELECT * FROM aTable");
> while(rs.next()) {
> //...
> }
>
> } catch (Exception e) {
> e.printStackTrace();
> }
> return (mapping.findForward("xxx"));
> }
This is absolutely the wrong way of doing database access. You *must*
properly cleanup JDBC resources on every access, including when exceptions
are thrown. Doing this cleanup is tedious, boring, and error prone so I
created the Mapper project in the Jakata Commons Sandbox. Check it out;
it significantly reduces the size of database access code as well as
isolates your app. from the persistence mechanism so you can swap it
later.
David
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]