Hi Leszek,

please appologize that I have not been able to answer your request earlier. In 
case you have not found out already, here are my comments to your questions of 
last Friday:

To 1: We use empire-db a lot in Web applications which of course use 
mutlithreaded requests. Normally the data model definition is static i.e. once 
it is set up, it is not changing and thus accessing it from multiple threads is 
not a problem. All stateful objects used to access and manipulate data such as 
DBRecord and DBReader are allocated on a per thread basis. However, if you plan 
to make dynamic changes to your data model at runtime you will have to make 
sure that these changes are thread-safe. This must be done at application level.

To 2: The conneciton used when opening the database is not stored with the 
database. It's purpose is soley to allow the driver to perform intialization 
functions and may not be used at all. Hence the conneciton may even be null, 
when opening the database. The open function on the database must only be 
called once in order to attach the driver. You may then use as many connections 
as you want - everytime a connection is needed you must supply it with the API 
call. 
In our (web-)projects we usually obtain a connection from a connection pool 
managed by the application server on a per request basis.

I hope my answer is helpful for you.

P.S. Thanks for your contribution of the DdlUtils interoperability code. I will 
have a look at it as soon as possible.

Regards
Rainer


[email protected] wrote:
> re: using of empire-db in multithreaded environment with multiple
> connections
> 
> Hello
> 
> I am new on this list. First of all I think empire-db is a framework
> which does a good job without
> overuse of annotations (in fact it does not use them at all).
> 
> I have some questions regarding use of empire-db in multithreaded
> environment (in example in a service layer of a web server)
> 
> 1 Is DBDatabase (and related DBTable, DBColumn) thread-safe? I mean that
> only one instance of database model exists and
> it may be acessed by multiple threads. I also assume that DBCommand,
> DBRecord are created locally in functions.
> 
> 2 DBDatabase must be opened before use by call of
> open(driver,connection). What to do if application creates/uses multiple
> connections? Should DBDatabase be reopened on every connection or it is
> enough to open it only once.
> 
> Regards
> Leszek Piotrowicz

Reply via email to