Hibernate4 学习笔记

学习了一下Hibernate4,写了个“hello world”。结果发现与以往版本的hibernate有所初入,Hibernate的一些API已经进行了改动,比如buildSessionFactory目前已经不建议使用了,转而提供了buildSessionFactory(ServiceRegistry serviceRegistry) 这么一个方法。

那么如何利用这个新的方式来获取sessionFactory呢?Google了之后发现是这么用的

Configuration cfg = new Configuration().configure();

		ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(
				cfg.getProperties()).buildServiceRegistry();
		SessionFactory sf = cfg.buildSessionFactory(sr);
关于ServiceRegistryBuilder的buildServiceRegistry的JAVADOC是这样说明的
public ServiceRegistry buildServiceRegistry()
Build the service registry accounting for all settings and service initiators and services.
Returns:
The built service registry
其实还是不太明白。。 尴尬

在实践过程中,遇到几个异常。

The content of element type "session-factory" must match "(property*,mapping*,(class-cache|collection-cache)*,event*,listener*)"
这个异常可能是这样的:在session-Factory的子节点中定义的顺序与Hibernate定义的不一致。也就是说需要先定义property,其次是mapping,紧接着class-cache,collection-cache,然后是event,listener。 如果出现这个异常,则可能是你定义的顺序有误。

然后是

org.hibernate.service.jndi.JndiException: Error parsing JNDI name [XXX]
这个的原因是在session-factory中定义了name属性,而dtd中没有定义。 我在建立这个xml的时候是使用eclipse的插件建立的,填了一个sessionFactory的name,于是就出现了这个异常。

你可能感兴趣的:(Hibernate,Hibernate)