【问题标题】:Hibernate 4.3.0.Final get sessionHibernate 4.3.0.Final 获取会话
【发布时间】:2014-01-19 03:48:10
【问题描述】:

hibernate documentation for version 4.3.0.Final中给出以下代码sn-p来创建SessionFactory

package org.hibernate.tutorial.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            return new Configuration().configure().buildSessionFactory();
        }
        catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

}

这似乎已经过时,因为 buildSessionFactory() 方法已被弃用。创建SessionFactory 的正确方法是什么?

【问题讨论】:

    标签: java hibernate configuration sessionfactory


    【解决方案1】:
    public class TestHB4 {
        private static StandardServiceRegistry serviceRegistry;
        private static SessionFactory sessionFactory;
    
        public static void main(String[] args) {
            Person person = new Person();
            person.setFirstName("Namal");
            person.setLastName("Dinesh");
    
    
            Configuration configuration = new Configuration().configure();
            serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
            sessionFactory = configuration.configure().buildSessionFactory(serviceRegistry);
    
            Session session = sessionFactory.openSession();
    
            session.beginTransaction();
    
            session.save(person);
    
            session.getTransaction().commit();
            session.close();
    
    
        }
    

    【讨论】:

    • 你能不能也看看我的问题。 stackoverflow.com/questions/23646389/…
    • 谢谢! (我想知道他们什么时候决定停止改变这个)
    • 在这个答案中,Configuration.configure() 被调用了两次。因为我认为这可能会导致抛出像Duplicate class/entity mapping 这样的异常,因为配置是被扭曲的。我认为这段代码的第 10 行应该改为sessionFactory = configuration.buildSessionFactory(serviceRegistry);。如果我错了,请纠正我。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2016-06-04
    • 2016-11-05
    • 2014-07-02
    • 2016-11-10
    • 1970-01-01
    相关资源
    最近更新 更多