new Configuration.configure怎么spring 读取配置文件的

博客访问: 1057498
博文数量: 325
博客积分: 1966
博客等级: 上尉
技术积分: 2689
注册时间:
Follow excellent,And success will chase you.
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Java
这段时间刚开始学习Hibernate,到官网下文件包,发现刚出来的hibernate-release-4.0.0.CR6,于是下了下来,对着书上的例子一敲,问题来了...见下图
没办法,又重新进官网下了个hibernate-distribution-3.6.8.Final,发现没有问题。
于是乎......在官网和4.0源文件中穿插研究了几个小时,终于搞明白怎么回事了。
Hibernate4.0新增了一个ServiceRegistry接口,应用于Hibernate的配置或者服务等将统一向这个ServiceRegistry注册后才能生效。所以需要构建一个ServiceRegistry对象,将配置信息向它注册,然后Configuration对象根据从这个ServiceRegistry对象中获取配置信息生成SessionFactory。
那么这个ServiceRegistry怎么来呢?看看源代码结构就能发现它的来源地了——org.hibernate.service.ServiceRegistryBuilder。
分析一下这个ServiceRegistryBuilder的源文件,得出以下新的构建SessionFactory的方式:
Configuration config = new Configuration();
SessionFactory sf = config.buildSessionFactory(
new ServiceRegistryBuilder()
.configure()
.buildServiceRegistry());
却发现仍然有问题,居然是读取hibernate.cfg.xml文件出错,异常如下:
[org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'hibernate-configuration'.]
该文件经hibernate3测试通过,不可能出错,难道是要用hibernate-configuration-4.0.dtd?打开浏览器输入地址,发现没有这个文件,无奈,不用xml文件配置,使用hibernate.properties进行配置,修改代码如下:
Configuration config = new Configuration();
SessionFactory sf = config.buildSessionFactory(
new ServiceRegistryBuilder()
.buildServiceRegistry());
运行测试通过!
不过,这只是很肤浅的用法,更深入的用法尚在摸索中...
简单得出总结,Hibernate4的配置入口不再是Configuration对象,而是ServiceRegistry对象,Configuration对象将通过ServiceRegistry对象获取配置信息(官方说法是为了方便统一管理)。但是使用XML文件进行配置仍有不知名的问题,盼早日明晓。
以上见解仅仅是自己的一份学习笔记,希望能帮助到一些有同样疑惑的朋友,本人也只是刚开始学习Hibernate,其中肯定有不成熟与草率之处,希望各位看到的朋友多多交流指正,谢谢!
更正规与专业的用法可参照Hibernate 4.0源代码中Configuration#buildSessionFactory()的实现:
public SessionFactory buildSessionFactory() throws HibernateException {
Environment.verifyProperties( properties );
ConfigurationHelper.resolvePlaceHolders( properties );
final ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings( properties )
.buildServiceRegistry();
setSessionFactoryObserver(
new SessionFactoryObserver() {
public void sessionFactoryCreated(SessionFactory factory) {
public void sessionFactoryClosed(SessionFactory factory) {
( (StandardServiceRegistryImpl) serviceRegistry ).destroy();
return buildSessionFactory( serviceRegistry );
private static SessionFactory sessionF
private static ServiceRegistry serviceR
private static SessionFactory configureSessionFactory() throws HibernateException {
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionF
不错,谢谢
阅读(8185) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。Hibernate的Configuration对象的configure()方法
来源:博客园
Configuration configuration=new Configuration(); configuration.configure(); 在Hibernate底层实现configure()方法时会默认在classpath下面(即从src目录下开始查找)寻找hibernate.cfg.xml,并进行配置,当然也可以自己指定hibernate.cfg.xml文件位置: configuration.configure("/com/db/hibernate.cfg.xml");
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动}

我要回帖

更多关于 sp configure 配置项 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信