zoukankan      html  css  js  c++  java
  • 初探Hibernate3源码读取配置文件

    依照个人推测,要实现ORM框架,关键是如何拼凑sql语句再通过jdbc来进行对数据库的访问,另外将数据库返回的数据记录封装成对应的类也是必不可少的。

    那么实现ORM框架的基本思路如下:

    1,读取xml配置文件,获取连接数据库的配置信息和映射文件;

    2,读取类与表的映射文件,保存映射信息;3待续。。。

    众所周知,hibernate是通过Configuration类来读取配置文件的,下面来看一看其过程:

    1,首先new一个Configuration(),则构建函数会new一个SettingsFactory();

    2,调用Configuration的方法configure(),进行读取hibernate.cfg.xm配置文件,那么是如何保存类与表的对应关系呢?

    Configuration类:

    private void parseSessionFactory(Element sfNode, String name) {
    		Iterator elements = sfNode.elementIterator();
    		while ( elements.hasNext() ) {
    			Element subelement = (Element) elements.next();
    			String subelementName = subelement.getName();
    			if ( "mapping".equals( subelementName ) ) {
    				parseMappingElement( subelement, name );  //不断循环,解析每一个映射文件
    			}
       }
    }
    
    protected void add(org.dom4j.Document doc) throws MappingException {
       HbmBinder.bindRoot( doc, createMappings(), CollectionHelper.EMPTY_MAP );//将所读取信息都保存到Mappings中
    }
    

    HbmBinder类:

    if ( "class".equals( elementName ) )   //读取映射文件中类标签内容
    { RootClass rootclass = new RootClass(); bindRootClass( element, rootclass, mappings, inheritedMetas ); mappings.addClass( rootclass ); }
    	public static void bindRootClass(Element node, RootClass rootClass, Mappings mappings,
    			java.util.Map inheritedMetas) throws MappingException {
    		bindClass( node, rootClass, mappings, inheritedMetas );  //读取设置该类名
    		inheritedMetas = getMetas( node, inheritedMetas, true ); // get meta's from <class>
    		bindRootPersistentClassCommonValues( node, inheritedMetas, mappings, rootClass );
    	}
    
  • 相关阅读:
    LTPA Cookie原理
    如何对更改internet密码所需的缓存时间进行调整?
    Freemem eclipse查看内存的小插件
    Java中static、final用法小结
    MANIFEST.MF内容属性名详细解释
    Java程序员的良药:应用程序的开发技巧
    spring struts2 ibatis框架整合开发
    java中静态代码块的用法 static用法详解 类的加载顺序
    从svn上直接导入项目到workspace中
    Eclipse自动生成UML图 Green UML和ModelGoon(直接推拽)
  • 原文地址:https://www.cnblogs.com/jianzhi/p/3238800.html
Copyright © 2011-2022 走看看