Hibernate替代品中的buildSessionFactory

时间:2012-11-18 14:06:30

标签: hibernate java-ee orm sessionfactory hibernate-4.x

我正在关注Hibernate的this教程。该教程已经很老了,因为它仍然使用旧的buildSessionFactory()。

我的问题是我如何使用最新的buildSessionFactory(serviceRegistry)我是新来的hibernate。我不知道我将如何实现这一点。这是我的代码

public static void main(String[] args) {
    // TODO Auto-generated method stub
    UserDetails ud = new UserDetails();
    ud.setId(1);
    ud.setName("David Jone");

    SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(serviceRegistry)
    Session session = sessionFactory.openSession();
    session.beginTransaction();
    session.save(ud);
    session.getTransaction().commit();

}

如果你们可以在没有Maven的情况下链接Hibernate 4的教程,那真的会有所帮助。

1 个答案:

答案 0 :(得分:1)

您似乎是Hibernate的新手,并且在基础知识方面苦苦挣扎。我建议你阅读文档并学习这个概念。

Hibernate Documentation是理解一些基础知识的好起点。

此外,我写了series of articles on Hibernate您可能想要通过的内容。

为了以编程方式访问SessionFactory,我建议您使用本教程中给出的Hibernate Utility类:

Hibernate Hello World example

package net.viralpatel.hibernate;

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) {
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

有了这门课程,你就可以使用它:

private static Employee save(Employee employee) {
    SessionFactory sf = HibernateUtil.getSessionFactory();
    Session session = sf.openSession();
    session.beginTransaction();

    Long id = (Long) session.save(employee);
    employee.setId(id);

    session.getTransaction().commit();

    session.close();

    return employee;
}

希望这有帮助。