ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Larry Meadors" <lmead...@apache.org>
Subject Re: Singleton DAO and mutilple threads
Date Wed, 25 Oct 2006 16:30:13 GMT
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