论坛首页 Java企业应用论坛

从应用角度看Hibernate源码(一):Hibernate配置文件

浏览 11478 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-10-08  
这个帖子,不是对Hibernate性能的讨论,这里只做简单的介绍。Hibernate有很多致命的弱点。最重要的是Hibernate是单库(可以说单实例)解决方案。尽管Hibernate现在除了一个新的多库解决方案。但目前是不成熟的。
   就写这么多吧。我怕引发争议,偏离了主题。
0 请登录后投票
   发表时间:2007-10-08  
(7)这个文件是怎样被加载到Hibernate的处理系统的呢?是通过org.hibernate.cfg.Configuration的。请看下面源码(只解释几个重要的方法)

public class Configuration implements Serializable {
 ......
}

  这个配置文件是是序列化的,其实Hibernate把全局的类对象都给序列化了。
public Configuration addJar(File jar) throws MappingException {
		log.info( "Searching for mapping documents in jar: " + jar.getName() );
		JarFile jarFile = null;
		try {
			try {
				jarFile = new JarFile( jar );
			}
			catch (IOException ioe) {
				throw new InvalidMappingException(
						"Could not read mapping documents from jar: " + jar.getName(), "jar", jar.getName(),
						ioe
				);
			}
			Enumeration jarEntries = jarFile.entries();
			while ( jarEntries.hasMoreElements() ) {
				ZipEntry ze = (ZipEntry) jarEntries.nextElement();
				if ( ze.getName().endsWith( ".hbm.xml" ) ) {
					log.info( "Found mapping document in jar: " + ze.getName() );
					try {
						addInputStream( jarFile.getInputStream( ze ) );
					}
					catch (Exception e) {
						throw new InvalidMappingException(
								"Could not read mapping documents from jar: " + jar.getName(),
								"jar",
								jar.getName(),
								e
						);
					}
				}
			}
		}
		finally {
			try {
				if ( jarFile != null ) {
					jarFile.close();
				}
			}
			catch (IOException ioe) {
				log.error("could not close jar", ioe);
			}
		}

		return this;
	}


这个方法是我们不常用的方法,用于加载jar包里面*.hbm.xml文件。其实我们从中学到的不仅仅是Hibernate的一个功能,而是学到了如何对Jar文件进行合理的操作。如果有一天需要对jar文件进行操作,到Hibernate源码里看看就行了。
0 请登录后投票
   发表时间:2007-10-09  
fu80008 写道
这个帖子,不是对Hibernate性能的讨论,这里只做简单的介绍。Hibernate有很多致命的弱点。最重要的是Hibernate是单库(可以说单实例)解决方案。尽管Hibernate现在除了一个新的多库解决方案。但目前是不成熟的。
   就写这么多吧。我怕引发争议,偏离了主题。

我也觉得这是hibernate一个很值得讨论的问题。
你能否以此为主题另开新贴,让高手们都来参与一下。
0 请登录后投票
   发表时间:2007-10-09  
奇怪,这个帖子写的还可以吧,怎么投隐藏了?
0 请登录后投票
   发表时间:2007-10-09  
好酒不怕巷子深。只要是好东西,会有人发现的。至于Hibernate的优劣,也懒得去讨论了,一般没有什么结果。就是一帮不懂的人在瞎侃。没劲
    这个帖子就写到这儿吧,如果有什么好的思想,大家可以来补充。
0 请登录后投票
   发表时间:2007-10-09  
你怎么能说别人不懂hibernate呢,几百万上千万的项目都是这样的人做出来的!
0 请登录后投票
   发表时间:2007-10-09  
大哥,就这样吧。别难为我了,你要是觉得合适你也可以去开辟一个专栏试试。
0 请登录后投票
   发表时间:2007-10-09  
不是啊,我觉得你写得很好,那个投隐藏的太可耻了。
你写了这么多条,全部都切合"从应用角度看hibernate源码"的主题,虽然有几条稍微浅显点,但总的来说,对那些刚入门者、甚至用了几年hibernate的人都极具启发意义。当然,对于那些"不屑编码"者,"忽悠"者,确实没有用。我觉得这是篇很好的帖子,希望楼主继续(可另开帖)。
还有我建议你再开专栏时,尽量把前面几楼、甚至首页自己给占了,免得让别人说废话,影响气氛。
0 请登录后投票
   发表时间:2007-10-09  
谢谢,兄台的关注。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics