Я имею дело с спящим режимом, и когда я открыл свой текущий проект, я понял, что моя сессия - Factory устарела:
AnnotationConfiguration af = new AnnotationConfiguration();
SessionFactory factory = af.configure().buildSessionFactory();
Session session = factory.openSession();
AnnotationConfiguration, по-видимому, устарела до сих пор... Итак, я проверил JavaDoc, и мне сказали, что он перемещен в:
org.hibernate.cfg.Configuration
Мой код работает до сих пор, на самом деле я не хочу его менять... Но я искал googled и нашел того, кто задает себе тот же вопрос, почему SessionFactory нужно изменить... http://rgordon.co.uk/blog/2012/02/24/hibernate-please-dont-deprecate-yourself/
Статья с 2012 года (так не то, что старое...) и описывает все так:
ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder();
serviceRegistryBuilder.applySettings(properties);
ServiceRegistry serviceRegistry = serviceRegistryBuilder.buildServiceRegistry();
Configuration configuration = new Configuration().addClass(FeedTradePersistable.class);
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Я реализовал это. JavaDoc доказывает это неправильно - снова! Устаревшее. Он относится к:
org.hibernate.boot.registry.StandardServiceRegistryBuilder
Я снова искал это. Результаты не были настолько удовлетворительными...
Я начал изменять код...
ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();
Configuration configuration = new Configuration();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session session = sessionFactory.openSession();
И возникает исключение...
org.hibernate.HibernateException: соединение не может быть нулевым, если 'hibernate.dialect' не установлен
в строке:
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Я уверен, что это связано с тем, что я не указал никаких настроек конфигурации. На самом деле, я не хочу. Я чувствую себя комфортно с hibernate.cfg.xml.
Я немного поиграл с конфигурацией .addFile(.. - не был успешным...
Есть ли у кого-нибудь идеи? Благодаря
UPDATE: (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>
ОБНОВЛЕНИЕ (16. фев. 2014): Я думаю, что нужно показать вам мой pom.xml. Мне потребовалось некоторое время, пока я не выяснил, какая комбинация Hibernate-Framework работает для меня...
<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>