`
wandejun1012
  • 浏览: 2732948 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java解析hibernate.cfg.xml

 
阅读更多

思路:依然是DOM4J的DOM思想,都是先通过各种方法得到Document doc,对象,然后获取到根节点,再然后就是迭代了。

 

注意点:和读取一般的xml文件最大的区别是:要在SAXReader上面加一个解析器EntityResolver

 

用到的jar包:hibernate3所有jar

 

hibernate.cfg.xml位置:放在src根目录下。

 

ReadXmlTest类:

package test.testxml;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Iterator;
import java.util.Properties;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import junit.framework.TestCase;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.hibernate.util.XMLHelper;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import util.CommonUtil;
import util.MySaxHandler;


public class ReadXmlTest extends TestCase {
	Properties properties=new Properties();
	protected transient XMLHelper xmlHelper=new XMLHelper();
	private EntityResolver entityResolver=XMLHelper.DEFAULT_DTD_RESOLVER;
	
	/**
	 * 读取hibernate的配置文件的方法1
	 */
	public void testHibernateXmlRead1(){
		try {
			SAXReader saxReader=new SAXReader();
			saxReader.setEntityResolver(entityResolver);//这是关键
			String resource="/hibernate.cfg.xml";
			InputStream inputStream=CommonUtil.getResourceAsStream(resource);
			//拿到文件流,方法1		
			
			//拿到文件流,方法2	
//			String filePath=ReadXmlTest.class.getClassLoader().getResource("").getPath();
//			System.out.println("filePath="+filePath);
//			InputStream inputStream=new FileInputStream(filePath+resource);
			
//			List errors = new ArrayList();
//			Document doc = xmlHelper.createSAXReader( resource, errors, entityResolver )
//					.read( new InputSource( stream ) );
			
			Document doc=saxReader.read(new InputSource(inputStream));
			Element rootElement=doc.getRootElement().element("session-factory");
			addProperties(rootElement);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void addProperties(Element parent) {
		Iterator iter = parent.elementIterator( "property" );
		while ( iter.hasNext() ) {
			Element node = (Element) iter.next();
			String name = node.attributeValue( "name" );
			String value = node.getText().trim();
			if(name.equals("hibernate.connection.username")){
				System.out.println("用户名为:"+value);
			}
			properties.setProperty( name, value );
			if ( !name.startsWith( "hibernate" ) ) {
				properties.setProperty( "hibernate." + name, value );
			}
		}
	}
	
}

 

 

这个方法运行后可以打出数据库用户名为:root

如果不加这个解析器,是无法识别的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论
2 楼 wandejun1012 2014-12-05  
不可以的。
1 楼 zmj1049933053 2014-12-03  
可以修改hibernate.cfg.xml中的属性吗

相关推荐

    hibernate.cfg.xml文件

    虽然`hibernate.cfg.xml`文件主要用于配置,但深入了解Hibernate源码,我们可以看到在加载配置文件后,Hibernate会解析XML,构建内部的数据结构,然后根据这些配置初始化各种组件,如连接池、方言等。 总结,`...

    ssh整合,不带hibernate.cfg.xml的方式

    在这个场景中,我们关注的是不通过传统的`hibernate.cfg.xml`文件来配置Hibernate,而是借助Spring框架的`LocalSessionFactoryBean`进行整合。 首先,`hibernate.cfg.xml`是Hibernate传统配置文件,它包含了数据库...

    hibernate配置文件hibernate.cfg.xml的详细解释

    在Java持久化框架Hibernate中,`hibernate.cfg.xml`是核心配置文件之一,它用于配置Hibernate的运行环境,包括数据库连接信息、性能参数以及其他高级配置选项等。正确配置此文件对于Hibernate的高效稳定运行至关重要...

    Jdom生成hibernate.cfg.xml和读取其中内容

    标题中的“Jdom生成hibernate.cfg.xml和读取其中内容”涉及到两个主要知识点:一是JDOM库在Java中解析和生成XML文档的应用,二是利用JDOM操作Hibernate配置文件`hibernate.cfg.xml`。 首先,JDOM是Java Document ...

    使用dom4j生成和读取hibernate.cfg.xml

    在IT行业中,XML文件是常用于配置和存储数据的格式,尤其在Java世界里,比如Hibernate框架的配置文件`hibernate.cfg.xml`。本文将深入探讨如何使用DOM4J库来生成和读取`hibernate.cfg.xml`,这是一个强大的Java XML...

    Hibernate的........htm.xml和hibernatecfg.xml配置

    `.hbm.xml`文件用于映射数据库表和Java类之间的关系,而`hibernate.cfg.xml`则是Hibernate的整体配置文件,包含了数据库连接、事务管理等核心设置。 ** Hibernate基础知识 ** Hibernate是一款流行的Java持久化框架...

    根据hibernate.cfg.xml文件生成POJO数据库表的工具类

    1. **解析XML配置文件**:使用Java的DOM或SAX解析器读取`hibernate.cfg.xml`,获取到所有`<class>`标签的相关信息。 2. **获取表名和字段信息**:从每个`<class>`标签中提取出表名,并通过JDBC连接查询数据库获取表...

    hibernate.rar

    在Hibernate中,DTD文件如`hibernate.cfg.xml.dtd`或`hibernate-mapping-3.0.dtd`等,它们定义了Hibernate配置文件和映射文件的结构。这些文件规定了XML元素的命名、属性以及顺序,确保了配置和映射文件的正确性。...

    hibernate c3p0 数据库连接池参数详解.txt

    在 Hibernate 中,C3P0 的配置主要通过 `hibernate.properties` 或 `hibernate.cfg.xml` 文件中的属性进行设置。这些配置项对于控制连接池的行为至关重要。 #### 3. 关键配置参数详解 ##### 3.1 hibernate....

    Eclipse上使用Hibernate

    Eclipse 上使用 Hibernate ...在 hibernate.cfg.xml 文件的首部,您需要添加 DOCTYPE 声明,以便 Hibernate 能够正确地解析配置文件。 通过以上步骤,您就能够在 Eclipse 环境中使用 Hibernate 完成持久层的开发。

    hibernate所需要的所有jar包

    9. **Hibernate HelloWorld程序**:可能包括一个或多个Java源文件,以及相关的配置文件(如hibernate.cfg.xml、实体类、映射文件等)。 总的来说,这个压缩包是一个全面的Hibernate开发环境起步包,包含运行...

    javahibernate.rar

    Hibernate通过配置文件(如hibernate.cfg.xml)定义数据库连接,并使用实体类(Entity)和映射文件(hbm.xml)来建立对象-关系映射。在这个项目中,可能存在一个表示在线用户的实体类,以及对应的数据库表,...

    oracle的hibernate配置文件

    本文将深入探讨Hibernate与Oracle数据库集成的配置文件——`hibernate1.cfg.xml`,并解析其中的重要元素。 `hibernate1.cfg.xml`是Hibernate配置的核心文件,它定义了数据源、连接池、持久化类、缓存策略等关键信息...

    hibernate.jar

    本文将深入探讨hibernate.jar这个核心库,解析其背后的原理与功能,为Java开发者的数据库操作提供更全面的理解。 一、Hibernate概览 Hibernate是一个开放源代码的ORM框架,它提供了Java对象和关系数据库之间的映射...

    hibernate源码分析一[启动过程]

    `Configuration`类是Hibernate配置的核心,它负责读取并解析`hibernate.cfg.xml`和`hibernate.properties`文件中的配置信息,将这些信息转换为`Settings`对象,供`SessionFactory`创建时使用。 #### SessionFactory...

    hibernate3.3.2所有jar包及xml配置文件

    这些jar包通常包括Hibernate的核心库、数据库驱动、JTA(Java Transaction API)支持、XML解析库以及其他相关依赖。此外,"已经修改好的hibernate.cfg.xml文件"表示提供了一个预配置的配置文件,用于设置数据库连接...

    java框架学习

    Hibernate.cfg.xml 文件解析 在给定的部分内容中,我们可以看到一个基本的 Hibernate.cfg.xml 文件,它定义了以下信息: * 数据库连接信息:包括数据库 URL、驱动类、用户名、密码等。 * 会话工厂配置:包括连接池...

    hibernate-configuration-3.0.dtd、hibernate-mapping-3.0.dtd

    这个文件是Hibernate配置文件的文档类型定义(DTD),用于验证配置文件`hibernate.cfg.xml`的格式是否正确。它规定了如数据库连接信息、缓存设置、实体类加载路径等配置项的结构和属性。例如,其中 `...

    Hibernate注释深入解析

    - `hibernate.cfg.xml`中的`<session-factory>`元素定义了session工厂的属性,`<mapping>`元素则用于指定映射文件,通常是`.hbm.xml`,它们定义了Java类和数据库表之间的映射。 5. **多数据库配置** 当需要访问...

Global site tag (gtag.js) - Google Analytics