web-dev-qa-db-fra.com

Comment utiliser le fichier hibernate.properties au lieu de hibernate.cfg.xml

J'essaie de me connecter à DB dans un servlet en utilisant Hibernate.J'ai lu que nous pouvons utiliser soit le fichier hibernate.cfg.xml ou hibernate.properties pour la configuration de la session.Pour moi, cela a fonctionné avec xml. Maintenant, lorsque j'essaie d'utiliser des propriétés au lieu de xml, cela ne fonctionne pas. Il dit que hibernate.cfg.xmlnon trouvé. Mais nulle part je n'ai mentionné d'utiliser le fichier xml et en fait j'ai supprimé ce fichier xml.

Aidez-moi, s'il vous plaît. Et veuillez me corriger si je fais quelque chose de mal.

13
Salman Ahmad

D'après ce que j'ai compris de l'hibernation, la meilleure chose à faire est de définir le mappage dans le hibernate.cfg.xml fichier et autres configurations dans le hibernate.properties.

Une autre approche de la configuration consiste à spécifier une configuration complète dans un fichier nommé hibernate.cfg.xml. Ce fichier peut être utilisé en remplacement du hibernate.properties fichier ou, si les deux sont présents, pour remplacer les propriétés.

Le hibernate.cfg.xml est également plus pratique une fois que vous devez régler le cache Hibernate. C'est votre choix d'utiliser hibernate.properties ou hibernate.cfg.xml. Les deux sont équivalents.

Vous pouvez en savoir plus à ce sujet dans le lien suivant:

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

Ce code appellera hibernate.cfg.xml par défaut:

Configuration configuration = new Configuration().configure();

Et ce code appellera hibernate.properties par défaut:

Configuration configuration = new Configuration();

J'espère que ça aide.

12
proS

Supprimez .configure() si vous utilisez hibernate.properties. Le code ci-dessous est l'implémentation de l'usine de session HibernateUtil.

private static SessionFactory buildSessionFactory() {
    try {
        Configuration configuration = new Configuration();
        ServiceRegistry serviceRegistry
            = new StandardServiceRegistryBuilder()
                .applySettings(configuration.getProperties()).build();
        configuration.addAnnotatedClass(LookUpModel.class);
        return configuration
                .buildSessionFactory(serviceRegistry);
    }catch(Exception e) {
        e.printStackTrace();
        throw new RuntimeException("There is issue in hibernate util");
    }
}

fichier hibernate.properites

hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url = jdbc:mysql://localhost:3306/test
hibernate.connection.username = root
hibernate.connection.password = passsword
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=1800
hibernate.c3p0.max_statements=50
hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
3
karepu

Si vous utilisez un base de données à partir d'un servlet alors vous devez définir un DataSource dans votre serveur et pointer une propriété de mise en veille prolongée au lieu de tout définir via toutes les autres propriétés d'hibernation que vous utilisez probablement actuellement.

Cela a l'avantage de vous permettre de définir le regroupement de connexions et d'autres paramètres liés à la connexion indépendamment de votre application.

Par exemple, votre environnement de production est susceptible d'avoir un mot de passe de base de données différent de celui de vos environnements de test et de développement.

1
Steve C