Hibernate4 学习笔记

本文介绍了Hibernate4的新特性,特别是buildSessionFactory方法的更新,并通过实例演示了如何使用ServiceRegistryBuilder配置SessionFactory。同时,还讨论了在配置过程中可能遇到的异常及解决方法。

学习了一下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,于是就出现了这个异常。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值