我正在关注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的教程,那真的会有所帮助。
答案 0 :(得分:1)
您似乎是Hibernate的新手,并且在基础知识方面苦苦挣扎。我建议你阅读文档并学习这个概念。
Hibernate Documentation是理解一些基础知识的好起点。
此外,我写了series of articles on Hibernate您可能想要通过的内容。
为了以编程方式访问SessionFactory,我建议您使用本教程中给出的Hibernate Utility类:
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;
}
希望这有帮助。