我在Hibernate 4中生成会话工厂时遇到了麻烦.在Hibernate 3中我简单地做了:
org.hibernate.cfg.Configuration conf= HibernateUtil
.getLimsInitializedConfiguration(systemConfiguration
.getHibernateconfFile());
SessionFactory sf = conf.configure().buildSessionFactory();
Run Code Online (Sandbox Code Playgroud)
现在我需要将ServiceRegistry类传递给buildSessionFactory,但是Javadocs对于如何解决这个问题非常模糊.有小费吗?
Lov*_*ija 70
是的,他们已经弃用了之前的buildSessionFactory API,并且很容易做得很好..你可以做这样的事情..
编辑:ServiceRegistryBuilder已弃用.您必须使用StandardServiceRegistryBuilder
public void testConnection() throws Exception {
logger.info("Trying to create a test connection with the database.");
Configuration configuration = new Configuration();
configuration.configure("hibernate_sp.cfg.xml");
StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
SessionFactory sessionFactory = configuration.buildSessionFactory(ssrb.build());
Session session = sessionFactory.openSession();
logger.info("Test connection with the database created successfuly.");
}
Run Code Online (Sandbox Code Playgroud)
有关更多参考和深入细节,您可以访问https://github.com/hibernate/hibernate-orm/blob/master/hibernate-testing/src/main/java/org/hibernate/testing查看hibernate的官方测试用例./junit4/BaseCoreFunctionalTestCase.java函数(buildSessionFactory()).
小智 18
试试这个!
package your.package;
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class HibernateUtil
{
private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;
static
{
try
{
// Configuration configuration = new Configuration();
Configuration configuration = new Configuration().configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
catch (HibernateException he)
{
System.err.println("Error creating Session: " + he);
throw new ExceptionInInitializerError(he);
}
}
public static SessionFactory getSessionFactory()
{
return sessionFactory;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 11
Configuration hibConfiguration = new Configuration()
.addResource("wp4core/hibernate/config/table.hbm.xml")
.configure();
serviceRegistry = new ServiceRegistryBuilder()
.applySettings(hibConfiguration.getProperties())
.buildServiceRegistry();
sessionFactory = hibConfiguration.buildSessionFactory(serviceRegistry);
session = sessionFactory.withOptions().openSession();
Run Code Online (Sandbox Code Playgroud)
小智 7
以下表示我使用hibernate 4.0.0.Final的经验.
类的javadoc(根据LGPL许可证分发)org.hibernate.cfg.Configuration声明:
注意:在4.0版本之后,将使用
ServiceRegistryBuilder和org.hibernate.metamodel.MetadataSources替换此版本,此时此类将被弃用并计划在5.0中删除.有关详细信息,请参见HHH-6183,HHH-2578和 HHH-6586
在查看问题2578后,我使用了这样的东西:
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().configure().buildServiceRegistry();
MetadataSources metadataSources = new MetadataSources(serviceRegistry);
metadataSources.addResource("some_mapping.hbm.xml")
SessionFactory sessionFactory = metadataSources.buildMetadata().buildSessionFactory();
Run Code Online (Sandbox Code Playgroud)
为了开始阅读配置,我不得不修改我的hibernate 3.2.6配置和映射文件以使用xmlns="http://www.hibernate.org/xsd/hibernate-configuration",xmlns="http://www.hibernate.org/xsd/hibernate-mapping"并且还删除了dtd规范.
我找不到一种方法来检查hibernate.cfg.xml和hibernate中定义的映射 .前缀在休眠相关的属性的hibernate.cfg.xml不再是可有可无的.
这可能适用于某些人.
我为一个人遇到了一些错误,因为包含的映射文件<cache usage="read-write" />最终使用了弃用的配置方式:
Configuration configuration = new Configuration().configure();
SessionFactoryImpl sessionFactory = (SessionFactoryImpl) configuration.buildSessionFactory();
EventListenerRegistry listenerRegistry = sessionFactory.getServiceRegistry().getService(EventListenerRegistry.class);
SolrIndexEventListener indexListener = new SolrIndexEventListener(); // a SaveOrUpdateEventListener i wanted to attach
listenerRegistry.appendListeners(EventType.SAVE_UPDATE, indexListener);
Run Code Online (Sandbox Code Playgroud)
我不得不以编程方式附加事件侦听器,因为Configuration不再在hibernate.cfg.xml中查找它们
| 归档时间: |
|
| 查看次数: |
145770 次 |
| 最近记录: |