Является ли buildSessionFactory () устаревшим в hibernate 4? - PullRequest
211 голосов
/ 24 декабря 2011

Когда я обновил версию Hibernate с 3.6.8.final до 4.0.0.final, я получил предупреждение об устаревшем методе buildSessionFactory() в этой строке:

private static final SessionFactory sessionFactory =
         new Configuration().configure().buildSessionFactory();

javadoc рекомендует использовать другойметод

buildSessionFactory(ServiceRegistry serviceRegistry)

но в документации я нашел устаревший вариант: (

Можете ли вы помочь мне с этим небольшим недоразумением?

Ответы [ 16 ]

0 голосов
/ 21 апреля 2015

здесь много API, которые устарели в ядре Hibernate.

мы создали фабрику сессий, как показано ниже:

SessionFactory sessionFactory = новая конфигурация (). Configure (). BuildSessionFactory ();

Метод buildSessionFactory устарел в выпуске hibernate 4 и заменен новым API. Если вы используете Hibernate 4.3.0 и выше, ваш код должен быть:

  1. Конфигурация конфигурации = новая конфигурация (). Configure ();

  2. StandardServiceRegistryBuilder builder = новый StandardServiceRegistryBuilder (). ApplySettings (configuration.getProperties ());

  3. SessionFactory factory = configuration.buildSessionFactory (builder.build ());

Класс ServiceRegistryBuilder заменен StandardServiceRegistryBuilder с 4.3.0. Похоже, в версии 5.0 будет много изменений. Тем не менее, не очень много ясности об устаревших API и подходящих альтернативах для использования. Каждый инкрементный выпуск выпускается с более устаревшим API, они служат для тонкой настройки базовой платформы для выпуска 5.0.

0 голосов
/ 14 марта 2015
Tested on 4.2.7 release

package com.national.software.hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

import com.national.software.dto.UserDetails;

public class HibernateTest {

    static SessionFactory sessionFactory;

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        UserDetails user = new UserDetails();
        user.setUserId(1);
        user.setUserName("user1");

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

        ServiceRegistry  serviceRegistry = (ServiceRegistry) new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
        sessionFactory = config.buildSessionFactory(serviceRegistry);

        Session session = sessionFactory.openSession();
        session.beginTransaction();
        session.save(user);
        session.getTransaction().commit();

    }

}
0 голосов
/ 11 ноября 2014

In Hibernate 4.2.2

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class Test {
    public static void main(String[] args) throws Exception
{
    Configuration configuration = new Configuration()
            .configure();

    ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(
            configuration.getProperties()).buildServiceRegistry();

    SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

    Session session = sessionFactory.openSession();

    Transaction transaction = session.beginTransaction();

    Users users = new Users();

    ... ...

    session.save(users);

    transaction.commit();

    session.close();

    sessionFactory.close();

    }
}
0 голосов
/ 03 августа 2014

Просто импортируйте следующую посылку,

import org.hibernate.cfg.Configuration;
0 голосов
/ 30 июля 2014

Я отредактировал метод, созданный batbaatar выше , поэтому он принимает объект конфигурации в качестве параметра:

    public static SessionFactory createSessionFactory(Configuration configuration) {
        serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
                configuration.getProperties()).build();
        factory = configuration.buildSessionFactory(serviceRegistry);
        return factory;
    }

В основном классе я сделал:

    private static SessionFactory factory;
    private static Configuration configuration 
    ...      
    configuration = new Configuration();
    configuration.configure().addAnnotatedClass(Employee.class);
    // Other configurations, then           
    factory = createSessionFactory(configuration);
0 голосов
/ 25 июля 2014

public void sampleConnection () генерирует исключение {

     Configuration cfg = new Configuration().addResource("hibernate.cfg.xml").configure();
     StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
     SessionFactory sessionFactory = configuration.buildSessionFactory(ssrb.build());
     Session session = sessionFactory.openSession();
     logger.debug(" connection with the database created successfuly.");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...