Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : pourquoi on utilise static pour connBD [ Divers / Débutant(e) ] (moooonaaaa)

mercredi 11 juin 2008 à 14:04:08 | pourquoi on utilise static pour connBD

moooonaaaa

 Salut,
je cherche dans l'internet comment je peux faire un classe qui me permet de connecter à une base de donnée mysql et exécuter des requêtes.
mais dans l'utilisation de cette classe dans des autres classes.Il le fait appel par static(static connBD conn
je comprends pas pourquoi il utilise static

mercredi 11 juin 2008 à 15:23:20 | Re : pourquoi on utilise static pour connBD

Ombitious_Developper

Salut:

Utiliser le mot clé static ou ne pas l'utiliser reste un choix de conception.

mercredi 11 juin 2008 à 15:55:23 | Re : pourquoi on utilise static pour connBD

moooonaaaa

Salut,

Si je l'utilise,quels sont les choses qui peuvent etre modifier.
Merci. 


mercredi 11 juin 2008 à 16:58:19 | Re : pourquoi on utilise static pour connBD

Ombitious_Developper

Salut:

Tout dépend. Sans bout de code (un diagram de classes ou un simple croquis), on ne peut rien faire.

mercredi 11 juin 2008 à 23:13:00 | Re : pourquoi on utilise static pour connBD

Nicolas___

Salut,
je cherche dans l'internet comment je peux faire un classe qui me permet de connecter à une base de donnée mysql et exécuter des requêtes.
mais dans l'utilisation de cette classe dans des autres classes.Il le fait appel par static(static connBD conn
je comprends pas pourquoi il utilise static

Je pense que je comprends ton problème , au fait on cree une classe (laquelle va contenir ton object connection )
Et tu ne va creer qu'un seule object connection

import java.sql.*;

public class AccessBD {

    private static Connection connexion;

    public static Connection getInstance() {
        /*
         * si la connection n'a pas encore ete cree alors on appele la fenetre
         * de connection sinon on retourne l'objet deja cree
         */
        if (connexion == null) {
        
            // méthode pour acceder a la BD
        }

        return connexion;
    }

    public static Connection getConnection() {
        return connexion;
    }
}

jeudi 12 juin 2008 à 09:20:14 | Re : pourquoi on utilise static pour connBD

Ombitious_Developper

Réponse acceptée !
Salut:

Tout d'abord, il faut savoir que la création des objets de type Connection est couteuse est ressources, de ce fait créer une connection à chaque fois qu'on veut intérroger la base de données est des mauvaises pratique de la programmation qui influe énormément les performances de l'application (temps de réponse, mémoire consommée, ...).

Les bonnes pratiques de JDBC exigent:

1. La création d'un pool de connection dans le cas d'une application multi-utilisateurs (application web, ...)
2. Utilisation d'un instance partagée de l'objet Connection dans la cas d'une application mono-utilisateur.

Dans le cas du notre problème, nous sommes dans le second cas. Pour ne pas créer chaque fois une instance de la classe Connection on utilise le patron Singleton.

Le parton Singleton nous permet de retourner une seule instance de la classe Connection.

public class ConnectionManager {
    static {
          try {
                // Charger le driver JDBC
                Class.forName("...");
          } catch (ClassNotFoundException e) {
                e.printStackTrace();
                System.exit(1);
          }
    }

    private static ConnectionManager mgr = null;
  
    private Connection connection = null;

    private ConnectionManager() {}

    public static ConnectionManager getConnectionManager() {
            if (mgr == null) {
                   mgr = new ConnectionManager();
            }
            return mgr;
    }

    public Connection getConnection() throws SQLException {
           if (connection == null) {
                 connection = DriverManager.getConnection(...);
           }
           return connection;
    }

    public void  releaseConnection() throws SQLException {
           if (connection != null) {
                  connection.close();
           }
    }
}

Voici comment utiliser cette classe:

try {
      ConnectionManager cm = ConnectionManager.getConnectionManager();
      Connection connection cm.getConnection();
      Statement statement = connection.createStatement(),
      ResultSet rs = statement.executeQuery(...);
      // ...
} catch (SQLException e) {
      e.printStackTrace();
}


Ce n'est pas fini, il reste à libérer l'objet Connection lorsqu'on a plus besoin, parmi les approches simples; on ferme l'objet connection lorsqu'on quitte l'application.

On modifie la classe ConnectionManager de cette façon:

public class ConnectionManager {
    // ...

   
private ConnectionManager() {
             Runtime.getRuntime().addShutdownHook(new Thread() {
                      @Override
                      public void run() {
                               try {
                                       releaseConnection();
                               } catch (SQLException e) {
                                       e.printStackTrace();
                               }
                      }
             });
    }


    private void  releaseConnection() throws SQLException {
           if (connection != null) {
                  connection.close();
           }
    }
}



jeudi 12 juin 2008 à 12:02:05 | Re : pourquoi on utilise static pour connBD

moooonaaaa

Salem,
merci beaucoup pour votre aide


jeudi 12 juin 2008 à 12:32:07 | Re : pourquoi on utilise static pour connBD

Chatbour

Membre Club
Salut à tous,

"
1. La création d'un pool de connection dans le cas d'une application multi-utilisateurs (application web, ...)"

Ombitious_Developper -> que veux tu dire par un pool de connection ?

jeudi 12 juin 2008 à 13:15:17 | Re : pourquoi on utilise static pour connBD

Twinuts

Membre Club Administrateur CodeS-SourceS

Chatbour > [ Lien ]



------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO

jeudi 12 juin 2008 à 13:21:56 | Re : pourquoi on utilise static pour connBD

1 2

Cette discussion est classé dans : static, utilise, classe, connbd


Répondre à ce message

Sujets en rapport avec ce message

Est ce possible? [ par VinZzZ ] Je me pose un question auquel j'espère quelqu'un aura une réponse, mais peut être que ce n'est pas possible en Java??On a crée une classe mère A et un Est ce possible? [ par VinZzZ ] Je me pose un question auquel j'espère quelqu'un aura une réponse, mais peut être que ce n'est pas possible en Java??On a crée une classe mère A et un Est ce possible? [ par VinZzZ ] Je me pose un question auquel j'espère quelqu'un aura une réponse, mais peut être que ce n'est pas possible en Java??On a crée une classe mère A et un Est ce possible? [ par VinZzZ ] Je me pose un question auquel j'espère quelqu'un aura une réponse, mais peut être que ce n'est pas possible en Java??On a crée une classe mère A et un abstarct & static [ par Guillemouze ] Bonjour, alors voila mon probleme: jai une classe C, et deux sous-classe Cext1 Cext2 (Cext1 (resp. Cext2) e generer instance vs variable static [ par bihoux ] Salut j'ai créé une application java composée de +ieurs classe. aaaa est la classe "main" elle lance (quand on appuie(s)." class="modupdated" Utilisation de classe provenant d'une interface [ par metos ] Bonjour,    J'ai une classe qui implémente une interface, j'arrive pas à créer une instance de la classe. Quand j'essai de crée l'objet, il me comme e quelle difference entre static et non static dans une classe [ par linoufra ] Bonjour ,j ' aimerai connaitre la difference entre staic et non static dans une classe permettante d instancier des objets ( sans main).d ' apres ce q Attributs static et héritage [ par tshupaka ] Bonjour, En gros, j'ai une classe abstraite : public abstract class ServiceClient {     protected static final  String CONFIG_FILE="";     protecte Main [ par farah2005 ] bonjour,j utilise netbeans 3.4.1 et jdk 1.5ma classe contient un main et pourtant a l execution ca me sort un message disant aue ma classe ne contient


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.