Brandon, Thanks for the responses. I'm using Struts. Is it still ok to store the dao as an instance var of an Action class? Typically, this would cause threading problems.
-Richard -----Original Message----- From: Brandon Goodin [mailto:[EMAIL PROTECTED] Sent: Monday, March 07, 2005 9:24 AM To: ibatis-user-java@incubator.apache.org Subject: Re: Storing the Dao or the DaoManager in the application context technically i guess you would. But, considering it is accessed in a static only once upon the class loading it wouldn't gain you much. It would get garbage collected regardless. Also, if it fails everything fails. But, it wouldn't hurt to add the close. Usually, if i am using a dao in a class I will store it as an instance variable that is initialized in the constructor. public class MyClass { ... private DaoManager daoManager; private MyDao myDao; ... public MyClass() { this.daoManager = DaoConfig.getDaoManager(); this.myDao = daoManager.getDao(MyDao.class); } ... public String myMethod() { return this.myDao.getSomeString(); } ... } Another variation to this is to use a constructor that takes the daoManager and myDao as parameters. This would be useful for IoC containers. If you don't use IoC it is still useful for mock object testing. Brandon On Mon, 7 Mar 2005 17:05:49 -0000, Yee, Richard K, CTR,, DMDCWEST <[EMAIL PROTECTED]> wrote: > Brandon, > So basically you are saying that the DaoManager should be stored and > the DAOs should be obtained as they are needed, right? Also, shouldn't > the Reader be closed in a finally statement? > > Thanks, > > Richard > > > -----Original Message----- > From: Brandon Goodin [mailto:[EMAIL PROTECTED] > Sent: Monday, March 07, 2005 7:34 AM > To: ibatis-user-java@incubator.apache.org > Subject: Re: Storing the Dao or the DaoManager in the application > context > > Do something like the following. Then you simply call the static > getDaoManager() method. > > package com.foo.myapp.dao.sqlmap; > > import com.ibatis.common.resources.Resources; > import com.ibatis.dao.client.DaoManager; > import com.ibatis.dao.client.DaoManagerBuilder; > > import java.io.Reader; > > public class DaoConfig { > > private static final DaoManager daoManager; > > static { > > try { > String resource = "com/foo/myapp/config/dao.xml"; > Reader reader = Resources.getResourceAsReader(resource); > daoManager = DaoManagerBuilder.buildDaoManager(reader); > } catch (Exception e) { > throw new RuntimeException("Could not initialize DaoConfig. > Cause: " + e); > } > } > > public static DaoManager getDaomanager() { > return daoManager; > } > > } > > Brandon > > On Mon, 07 Mar 2005 07:09:03 -0800, Richard Yee <[EMAIL PROTECTED]> > wrote: > > Hi, > > I'm developing an application using the iBATIS DaoManager and > > currently store the dao's that I get by calling DaoManager.getDao( ) > > in the application context at the application startup.. I was > > wondering if this is correct. Should I instead be storing the > > DaoManager in the application context at startup and then calling > > the > > getDao() method from it for each request? > > > > Thanks, > > > > Richard > > > > >