Hi Rainer,

thanks, overriding is the answer for my question.

Regards,
Ivan


On Mon, Aug 4, 2014 at 10:11 AM, Rainer Döbele <[email protected]> wrote:

> Hi Ivan,
>
>
>
> yes, when you open a database it gives the driver a chance to do some
> initialization.
>
> It depends on the driver implementation what it actually does. But you may
> override that behavior in the driver class.
>
> This is exactly why you should keep your database instance during the
> lifetime of your app.
>
>
>
> Rainer
>
>
>
>
>
> *Von:* [email protected] [mailto:[email protected]] *Im Auftrag
> von *ivan nemeth
> *Gesendet:* Montag, 4. August 2014 08:53
> *An:* user
> *Betreff:* Re: Best practice to access a DbDatabase?
>
>
>
> Hi Rainer,
>
>
>
> thank you for your answer.
>
>
>
> I've used a static accessor but if I open the database on application
> start it will open the database for the actual connection. I know that
> there are no reference to the connection in the database instance, but in
> case of the SQL Server driver some initialization SQL scripts is executed
> against the actual connection only and not for other connections
> (DbDatabaseDriver.attachDatabase). So it's true that there are no explicit
> reference to a connection from a database instance but there is an implicit
> binding through these initialization scripts.
>
>
>
> Thanks,
>
> Ivan
>
>
>
> On Sun, Aug 3, 2014 at 11:12 PM, Rainer Döbele <[email protected]> wrote:
>
> Hi Ivan,
>
>
>
> To answer your question:
>
> First you will have to create a class derived from DBDatabase which
> defines the schema of your database.
>
> You then have to open the database when your application starts.
>
> This will attach the driver to the database, but I will not block
> resources like e.g. a connection.
>
> In most cases this class will be a singleton.
>
>
>
> Hence you may e.g. use a static accessor like this:
>
>
>
>     *private* *static* MyDatabase *myDb*;
>
>
>
>     *public* *MyDatabse* *getDatabase()* {
>
>         *if* (*myDb*==*null*)
>
>             *myDb*=*new* MyDatabase();
>
>         *return* *myDb*;
>
>     }
>
>
>
> Regards
>
> Rainer
>
>
>
>
>
> *Von:* [email protected] [mailto:[email protected]] *Im Auftrag
> von *ivan nemeth
> *Gesendet:* Freitag, 1. August 2014 16:44
> *An:* user
> *Betreff:* Best practice to access a DbDatabase?
>
>
>
> Hi,
>
>
>
> a month ago (June 2014) there was a discussion already about connection
> pooling but I have further questions. I use some kind of connection pooling
> and Spring's JdbcTemplate, so I have a separate connection for each
> threads. But how should I access a DbDatabase instance? The db instance is
> tied to the actual connection, so separate threads can't use the same db
> instance.
>
>
>
> 1. Create a new DbDatabase instance for every query/updates/insert. Can it
> cause any problems, if a lot of instances are created every second? I mean
> there are static variables which are storing some global states
> (DbDatabase.databaseMap, DbTable.tableCount etc.)
>
>
>
> 2. Use some kind of pooling on the DbDatabase.
>
>
>
> Thanks,
>
> Ivan
>
>
>
>
>
>
>

Reply via email to