2017-07-20 6 views
0

J'ai un programme Java autonome [Pas de serveur d'application/session impliqué] utilisant la connexion Oracle DB et BoneCP. J'ai besoin d'exécuter différentes requêtes à partir de différentes méthodes et je ne veux pas que la connexion DB/pool soit créée dans chaque appel.Réutilisation de la connexion BoneCP dans un programme Java autonome

J'ai une classe DBManager dans laquelle le pool de connexions est créé. Je voudrais savoir exactement comment je peux réutiliser l'objet de connexion créé pour exécuter des requêtes mutiples de différentes classes/méthodes.

try { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return; 
    } 

    try { 

     // setup the connection pool 
     BoneCPConfig config = new BoneCPConfig(); 
     config.setJdbcUrl("jdbc:oracle:thin:@"+prop.getProperty(DB_HOST)+":"+prop.getProperty(DB_PORT)+":"+prop.getProperty(DB_INSTANCE)); // jdbc url specific to your database, eg jdbc:mysql://127.0.0.1/yourdb 
     config.setUsername(prop.getProperty(APP_DB_USER)); 
     config.setPassword(prop.getProperty(APP_DB_PWD)); 
     config.setMinConnectionsPerPartition(5); 
     config.setMaxConnectionsPerPartition(10); 
     config.setPartitionCount(1); 
     connectionPool = new BoneCP(config); // setup the connection pool 

     connection = connectionPool.getConnection(); // fetch a connection 

Si j'appelle l'objet de cette classe/même si c'est une classe statique, le CP ne sera-t-il pas créé à chaque fois? Hoew exactement je peux réutiliser l'objet de connexion en créant la connexion seulement une fois?

Merci d'avance.

+0

Je viens de voir https://stackoverflow.com/questions/6944810/using-bonecp-handling-connections-from-the-pool?rq=1 "question connexe, mais je voulais juste confirmer si la bonne façon est d'utiliser ma classe comme un singleton ou d'autres meilleures options sont là. –

Répondre

0

Votre meilleure option est d'utiliser une classe singleton.

La meilleure option suivante consiste à exécuter votre programme Java sur un serveur (par exemple, tomcat) et à laisser le serveur gérer le pool de connexions db pour vous.

Vous pouvez également essayer le pool de connexions hikaricp car il s'agit d'une implémentation de pool de connexions très rapide et propre!