1. 程式人生 > >Hibernate **關於hibernate4.3版本之後org.hibernate.service.ServiceRegistryBuilder被棄用**

Hibernate **關於hibernate4.3版本之後org.hibernate.service.ServiceRegistryBuilder被棄用**

讓我 IE 發現 code .com registry 都是 開啟事務 tran

  • 之前一直都是使用hibernate4.2.21的我,有一天突然沒有使用本地的jar包而是讓IDEA自動下載最新版本的hibernate5.2.2之後,發現有幾個經常使用的方法報錯了.

    //創建配置對象
    Configuration config=new Configuration().configure();
    //創建服務註冊對象
    ServiceRegistry serviceRegistry2=new ServiceRegistryBuilder() .applySettings(config.getProperties()).buildServiceRegistry();
    //創建會話工廠對象
    sessionFactory=config.buildSessionFactory(serviceRegistry2);
    //會話對象
    session=sessionFactory.openSession();
    //開啟事務
    transaction=session.beginTransaction();

  • -這真是讓我驚了個呆,網上一搜,好像有這個問題的人還不少,然後發現果然是hibernate版本的問題——hibernate4.3之後已經沒有了org.hibernate.service.ServiceRegistryBuilder這個類,它被棄用了
    技術分享圖片

  • 這下子問題就迎刃而解了
    -如果使用的是hibernate4.2之前的版本,那麽方法就這麽寫:

        //創建配置對象
        Configuration config = new Configuration().configure();
        //創建服務註冊對象
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
        //創建會話工廠對象
        sessionFactory = config.buildSessionFactory(serviceRegistry);
        //會話對象
        session = sessionFactory.openSession();
        //開啟事務
        transaction = session.beginTransaction();

-如果是hibernate4.3之後的版本,那麽方法就這麽寫:
導入包更換:org.hibernate.boot.registry.StandardServiceRegistryBuilder;

        //創建配置對象  
        Configuration config = new Configuration().configure();
        //創建服務註冊對象  
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config .getProperties()).build();
        //創建會話工廠對象  
        sessionFactory = config.buildSessionFactory(serviceRegistry);
        //會話對象  
        session = sessionFactory.openSession();
        //開啟事務  
        transaction = session.beginTransaction();

-甚至我還發現到hibernate5之後連上面的包都可以省略了:

        //創建配置對象(讀取配置文檔)
        Configuration config = new Configuration().configure();
        //創建會話工廠對象
        sessionFactory = config.buildSessionFactory();
        //會話對象
        session = sessionFactory.openSession();
        //開啟事務
        transaction = session.beginTransaction();

Hibernate **關於hibernate4.3版本之後org.hibernate.service.ServiceRegistryBuilder被棄用**