Vous cherchez un non-déconseillé session-factory
Je fais affaire avec mise en veille prolongée et que j'ai ouvert mon projet actuel, j'ai pensé à ma Session-Factory est obsolète:
AnnotationConfiguration af = new AnnotationConfiguration();
SessionFactory factory = af.configure().buildSessionFactory();
Session session = factory.openSession();
AnnotationConfiguration semble être obsolète maintenant... Donc j'ai vérifié la JavaDoc et je me suis dit, il a déménagé à:
org.mise en veille prolongée.cfg.Configuration
Mon code fonctionne très bien jusqu'à présent, en fait je ne veux pas le changer... Mais j'ai googlé et trouvé quelqu'un qui a du se poser la même question whythe SessionFactory doit être changé...
http://rgordon.co.uk/blog/2012/02/24/hibernate-please-dont-deprecate-yourself/
L'Article est à partir de 2012 (donc pas si vieux...) et explique tout de cette façon:
ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder();
serviceRegistryBuilder.applySettings(properties);
ServiceRegistry serviceRegistry = serviceRegistryBuilder.buildServiceRegistry();
Configuration configuration = new Configuration().addClass(FeedTradePersistable.class);
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
J'ai mis en place. La JavaDoc prouve que mal - de nouveau! Déconseillé.
Il fait référence à:
org.mise en veille prolongée.de démarrage.de registre.StandardServiceRegistryBuilder
J'ai googlé encore une fois. Les résultats n'étaient pas très satisfaisant...
J'ai commencé à modifier le code...
ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();
Configuration configuration = new Configuration();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session session = sessionFactory.openSession();
Et une exception est levée...
org.mise en veille prolongée.HibernateException: Connexion ne peut pas être null lorsque l'
'mise en veille prolongée.le dialecte n'est pas définie
à la ligne:
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Je suis assez sûr que c'est parce que je n'ai pas précisé de quelle configuration-paramètres. En fait, je ne veux pas. Je me sens à l'aise avec l'hibernate.cfg.xml.
J'ai joué un peu autour de avec la configuration.addFile(.. - n'était-ce pas réussi...
Quelqu'un a une idée à ce sujet?
Grâce
Mise à JOUR: (hibernate.cfg.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://localhost\SQLEXPRESS</property>
<property name="hibernate.connection.username">qohelet</property>
<property name="hibernate.connection.password">password</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="bonecp.setIdleMaxAgeInMinutes">240</property>
<property name="bonecp.setIdleConnectionTestPeriodInMinutes">5</property>
<property name="bonecp.partitionCount">3</property>
<property name="bonecp.acquireIncrement">10</property>
<property name="bonecp.maxConnectionsPerPartition">60</property>
<property name="bonecp.minConnectionsPerPartition">20</property>
<property name="bonecp.statementsCacheSize">50</property>
<property name="bonecp.releaseHelperThreads">3</property>
<mapping class="order.Line" />
<mapping class="order.Order" />
<mapping class="order.Group" />
</session-factory>
</hibernate-configuration>
Mise à JOUR (16. Février 2014):
Je pense qu'il est nécessaire de vous montrer mon pom.xml ainsi. Il m'a fallu un certain temps jusqu'à ce que j'ai compris la combinaison de la mise en veille prolongée-Cadre fonctionne pour moi...
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.10.Final</version>
<exclusions>
<exclusion>
<artifactId>hibernate-commons-annotations</artifactId>
<groupId>org.hibernate.common</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<groupId>org.hibernate.javax.persistence</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-commons-annotations</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.8.Final</version>
<exclusions>
<exclusion>
<artifactId>hibernate</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-annotations</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-commons-annotations</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<groupId>org.hibernate.javax.persistence</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
<version>1.1.1.Final</version>
<scope>provided</scope>
</dependency>
hibernate-dialect
de la propriété. Elle est nécessaire.Je sais, et il est spécifié dans le hibernate.cfg.xml déjà. Je ne vois pas le point pourquoi je devrais déclarer deux fois.
Montrez-nous votre fichier de configuration.
J'ai ajouté de l'hibernate.cfg.xml
OriginalL'auteur Qohelet | 2013-07-28
Vous devez vous connecter pour publier un commentaire.
Je pense que pour la 4.3 c'est maintenant:
OriginalL'auteur Owain Cole
oui, en mode veille prolongée version 4. 3 les deux buildSessionfactory() et ServiceRegistryBuilder() sont déconseillés.
si u ont changer votre code comme ci-dessous pour obtenir de la session de l'usine pour hibernate version 4.3
}
OriginalL'auteur Bharathiraja
Que j'ai un peu de temps pour moderniser mon logiciel, j'ai décidé de mettre un peu d'efforts et fait quelques recherches:
http://www.codejava.net/frameworks/hibernate/building-hibernate-sessionfactory-from-service-registry
fournit un moderne
HibernateUtil
:Même si cette version semble fonctionner ainsi:
}
Mais mon problème était que je ne voulais pas l'intégrer dans une nouvelle version avec l'ancienne libs. Après la mise à jour je suis tombé sur un
souvent.
Ennuyeux. Généralement Mkyong offre de bonnes solutions, mais dans mon cas, il a écrit la solution inverse de Stackoverflow...
J'ai donc cherché des référentiels et trouvé une scandaleusement facile solution (comparer: http://hibernate.org/orm/downloads/):
Certains autres problèmes mineurs qui m'a arrêté:
Dans le
hibernate.cfg.xml
j'ai dû changer de ligne à partir deupdate
àauto
:Le comparer à mon ancien pom.xml... alors j'ai eu ma première "rencontre" avec Hibernate et a ajouté tout ce qui a paru utile jusqu'à ce qu'il a travaillé. Après il l'a fait, alors j'ai cessé de le toucher pour... Presque deux ans... on ne change pas une "victoire" de l'équipe, non?
OriginalL'auteur Qohelet