ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tony Qian" <daqiqi...@aol.com>
Subject Re: Singleton DAO and mutilple threads
Date Wed, 25 Oct 2006 16:50:00 GMT
Larry,

Thanks for prompt response and suggestions.

Tony

Larry Meadors wrote on 10/25/2006, 12:30 PM:

 > Use Spring. It is IMO the best way to deal with this - spend 4 hours
 > with it and you'll never go back to this kind of code. Really, it's
 > that simple.
 >
 > If you absolutely can't use Spring, this works better than the example
 > you sent:
 >
 > ===
 > Class MyService {
 >   private DaoManager daoManager;
 >   private Table1DAO table1Dao;
 >   private Table2DAO table2Dao;
 >   private static MyService myServiceInstance = new MyService();
 >
 >   ...
 >
 >   public static MyService getInstance() {
 >       return myServiceInstance;
 >   }
 >
 >   ...
 >
 > }
 > ===
 >
 > Larry
 >
 >
 > On 10/25/06, Tony Qian <daqiqian2@aol.com> wrote:
 > >
 > >  All,
 > >
 > >  I have a question regarding singleton DAO and multiple clients
 > (threads) in
 > > IBATIS. If I use following codes, is thread safe if there are multiple
 > > clients (after I read mailing list, it gave me impression that
 > sqlMapClient
 > > is thread safe)?. Is there any performance concern if I use singleton
 > > Service (DAO)?
 > >
 > >  Appreciate your inputs and suggestions.
 > >
 > >  Tony
 > >
 > >  Class MyService {
 > >    private DaoManager daoManager;
 > >    private Table1DAO table1Dao;
 > >    private Table2DAO table2Dao;
 > >    private static MyService myServiceInstance = null;
 > >
 > >    private MemberService() {
 > >      daoManager = DaoConfig.getDaoManager();
 > >      table1Dao = (Table1DAO) daoManager.getDao(Table1DAO.class);
 > >      table2Dao = (Table2DAO) daoManager.getDao(Table2DAO.class);
 > >    }
 > >
 > >    public static MyService getInstance() {
 > >       synchronized(MyService.class) {
 > >           if(myServiceInstance == null) {
 > >               myServiceInstance = new MyService();
 > >           }
 > >        }
 > >        return myServiceInstance;
 > >    }
 > >
 > >    public List getDataFromTable1(Integer someValue){
 > >         try{
 > >              Table1Example example = new Table1Example();
 > >               example.setValue(someValue);
 > >               example.setValue_Indicator( Table1Example.EXAMPLE_EQUALS)
 > >               return table1Dao.selectByExample(example);
 > >          }catche(Exception ex){
 > >             // do something
 > >          }
 > >     }
 > >
 > >   public void insertDataToTable1 (Table1 table1)
 > >       try{
 > >               table1Dao.insert(table1);
 > >       }catch(Excpetion ex){
 > >        }
 > >  }
 > >
 >



Mime
View raw message