On Monday 24 Oct 2005 16:50, Ashish Kulkarni wrote:
> Hello
> What is the best way to get SqlMapClient in a web
> application
> 1 , Define a singleton pattern class, and create a
> instance of SqlMapClient to use by all classes which
> need to access data.
>
> 2, Define a AbstractClass and put method to get
> SqlMapClient in constructor of this class, and then
> each class which needs to get data extends this class
>
>
> 3, Create Instance of SqlMapClient in one of the init
> servlets, and store this SqlMapClient in
> ServletContext and pass it as one of the parameters to
> all data classes
>
> 4, or any other method
I have been following this thread without really understanding it.
I would be interested in any comments on what I do, which I think is point 1
(but I am new to Java and I am not sure I understand what a singleton is
properly). In particular, I am not sure I understand what the potential
Gotcha's are. Why doesn't everybody do it this way, it seems so SIMPLE.
The reason I do this is that I am attempting to avoid creating a session to
early in my application - but this has not been commented on in the thread at
all.
This is my basic class:
package uk.org.chandlerfamily.sqlmap.famtree;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.*;
import java.io.Reader;
public class FamtreeMap {
private static final SqlMapClient sqlMap;
static {
try {
String resource =
"uk/org/chandlerfamily/sqlmap/famtree/SqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader (resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException ("Error initializing DataMap class.
Cause: "
+ e);
}
}
public static SqlMapClient getSqlMapInstance () {
return sqlMap;
}
}
and then whenever I want to do something with my database I do
SqlMapClient map=FamtreeMap.getSqlMapInstance();
try {
map.startTransaction();
...
...
--
Alan Chandler
http://www.chandlerfamily.org.uk
Open Source. It's the difference between trust and antitrust.