`
xiaodongdong
  • 浏览: 81317 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

山寨hibernate第一步——解析配置文件进行数据库驱动

阅读更多

一、hibernate介绍

      Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

二、为什么要山寨hibernate

      hibernate的功能强大是毫无疑问的,有了它对数据库的操作都得心应手,为了能够对它有更深入的理解和更好的运用,山寨它绝对是一个比较好的办法,一方面熟悉它了,另一方面在以后做项目的时候对数据库的操作可以直接用自己写的,这样用起来更顺畅

 

三、山寨hibernate第一步——解析配置文件进行数据库驱动

      仍然是采用dom4j进行XML文件的解析

     整个项目结构如下所示

    

    配置文件myhibernate.cfg.xml如下所示

   

<?xml version="1.0" encoding="UTF-8"?>
<myhibernate-configuration>
<session-factory>
	<property name="connection.password">jwc</property>
	<property name="connection.username">root</property>
	<property name="connection.url">
		jdbc:mysql://localhost:3306/student
	</property>
	<property name="connection.driver_class">
		com.mysql.jdbc.Driver
	</property>

	<mapping resource="cn/zld/myhibernate/pojo/StudentInfo.hbm.xml" />

</session-factory>
</myhibernate-configuration>

    对数据库POJO类如下

  

package cn.zld.myhibernate.pojo;

import java.util.List;

/**
 * 数据库信息类
 * @author Administrator
 *
 */
public class DBInfo {

	private String driver;//驱动
	private String url;   //数据库所在地址
	private String username;  //数据库用户名
	private String password;  //数据库密码
	private List<String> resouces;   //映射源

	public String toString(){
		return "驱动:"+this.getDriver()+"  路径:"+this.getUrl()
		+"  用户名:"+this.getUsername()+"  密码:"+this.getPassword()
		+"  映射源:"+this.getResouces();
		}

	//setter & getter 方法
	public String getDriver() {
		return driver;
	}
	public void setDriver(String driver) {
		this.driver = driver;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public List<String> getResouces() {
		return resouces;
	}
	public void setResouces(List<String> resouces) {
		this.resouces = resouces;
	}


}

 

数据库连接类如下

package cn.zld.myhibernate.connectdb;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.DocumentException;
import org.dom4j.Element;

import cn.zld.myhibernate.pojo.DBInfo;

/**
 * 数据库连接
 * @author 张立冬
 *
 */
public class ConnectDB {

	    private static java.sql.Connection conn=null;
	    private static DBInfo db=new DBInfo();
	    private List<String> resources=new ArrayList();

		public static void main(String args[]){
			try{
				ConnectDB te=new ConnectDB();
				te.readXML();
				te.connectsql();
			}catch(Exception e){
				e.printStackTrace();
			}
		}


		/**
		 * 读取XML文件
		 */
		public void readXML(){
			//创建文件对象
			java.io.File file=new java.io.File("myhibernate.cfg.xml");
			if(file.exists()){
				try{
				//创建一个读取XML文件的对象
				org.dom4j.io.SAXReader reader=new org.dom4j.io.SAXReader();
				//创建一个文档对象
				org.dom4j.Document document=reader.read(file);
				//获取文件的根节点
				org.dom4j.Element element=document.getRootElement();
				element=element.element("session-factory");
				for(java.util.Iterator i=element.elementIterator();i.hasNext();){
					//获取节点元素
					element=(org.dom4j.Element)i.next();
					List<Attribute> attribute=element.attributes();//得到节点的所有属性
					Attribute atr=attribute.get(0);
					//对节点属性内容进行解析
					if(atr.getText().equals("connection.driver_class")){
						db.setDriver(element.getStringValue().trim());
					}else if(atr.getText().equals("connection.url")){
						db.setUrl(element.getStringValue().trim());
					}else if(atr.getText().equals("connection.username")){
						db.setUsername(element.getStringValue().trim());
					}else if(atr.getText().equals("connection.password")){
						db.setPassword(element.getStringValue().trim());
					}else if(atr.getName().equals("resource")){
						resources.add(atr.getValue());
						db.setResouces(resources);
					}else{
						System.out.println("没有读到指定项,请查看配置");
					}
				   }
				System.out.println(db);
				}
				catch(Exception e){
					e.printStackTrace();
				}
			}
			else{
				System.out.println("XML文件不存在!");
			}
		}


		// 对数据库进行连结
		public static java.sql.Connection connectsql() {
			try {
				if(null!=conn){
					return conn;
			}
				// 1.装载驱动类
				Class.forName(db.getDriver()).newInstance();
				String dbURL = db.getUrl();
				// 2.得到一个连结对象
				conn = java.sql.DriverManager.getConnection(dbURL,
						db.getUsername(), db.getPassword());
				System.out.println("------------->数据库连接成功");
				return conn;
			} catch (Exception ef) {
				System.out.println("------------->装载驱动出错");
				ef.printStackTrace();
			}
			return conn;
		}
}

 

运行结果

驱动:com.mysql.jdbc.Driver  路径:jdbc:mysql://localhost:3306/student  用户名:root  密码:jwc  映射源:[cn/zld/myhibernate/pojo/StudentInfo.hbm.xml]
------------->数据库连接成功

 山寨hibernate第一步——解析配置文件进行数据库驱动到此就已完成,接下来的任务是通析POJO配置文件进行数据库操作,敬请期待^_^

 

 

  • 大小: 16.6 KB
分享到:
评论

相关推荐

    看我山寨版 hibernate 简单实现 一

    Hibernate 是一个流行的关系对象映射(ORM)框架,它允许 Java 开发人员将数据库操作与对象模型相结合,极大地简化了数据访问层的开发工作。在“山寨版 Hibernate”的实现中,作者可能会探讨如何构建类似的 ORM 解决...

    山寨传声——欢乐的山寨——《瑶山乐》.doc

    山寨传声——欢乐的山寨——《瑶山乐》.doc

    山寨手机通用驱动 MT6228驱动

    MT6228驱动是针对山寨手机中常见的一种芯片组——MT6228的驱动程序。MT6228是一款由联发科(Mediatek)公司设计的单芯片解决方案,主要用于低成本的智能手机和平板电脑。这款芯片集成了基带处理器、射频收发器以及...

    山寨版当当网 struts+hibernate

    - **实体类**:Hibernate通过注解或XML配置文件定义实体类,这些类对应数据库中的表。 - **Session接口**:Session是与数据库交互的主要接口,负责CRUD(创建、读取、更新、删除)操作。 - **Criteria查询**和**HQL*...

    “山寨”现象反思——从知识产权法角度.doc

    “山寨”现象反思——从知识产权法角度.doc

    Java实习报告——山寨QQ聊天工具设计

    【Java实习报告——山寨QQ聊天工具设计】 这份实习报告详细记录了一个基于Java的简易聊天系统的开发过程,项目名为"My_QQ",旨在模仿QQ的基本功能,包括登录、注册、单人及多人聊天,并且退出应用。这个项目是针对...

    mtk 山寨手机驱动下载

    总结起来,这个压缩包提供的内容似乎涵盖了MTK山寨手机驱动的下载、安装以及音频设置的调整,对于拥有此类设备的用户来说,是一个宝贵的资源。在使用过程中,用户应仔细阅读说明文件,遵循指导步骤,以确保驱动安装...

    山寨版的简易表达式解析器

    1. **词法分析**:这是解析过程的第一步,将输入字符串分割成一个个有意义的部分,如数字、运算符和括号。这可能通过正则表达式或自定义的扫描器实现。 2. **语法分析**:词法分析后的令牌流需要被转换成抽象语法树...

    山寨机MTK串口驱动

    "txt"文件可能是关于如何下载和使用驱动的说明,而".url"文件则是一个快捷方式,可以直接打开浏览器访问西西软件园的网页,以便查找更多相关的驱动更新或技术支持。 总的来说,MTK串口驱动是连接和管理山寨机的关键...

    PL2303山寨芯片必备

    根据压缩包子文件的文件名称“PL2303”,我们可以推测这个压缩包内可能包含的是PL2303芯片的老版本驱动程序安装文件或其他相关配置文档。用户在下载并解压这个文件后,按照指示安装驱动程序,就可以解决山寨开发板上...

    很好用的杂牌手机USB万能驱动

    至于压缩包子文件的文件名称列表只有一个条目——"手机万能驱动",这可能是指该压缩包内包含了一个名为"手机万能驱动"的安装文件,用户只需解压后运行即可安装驱动。通常,这样的驱动安装程序会包含驱动库、安装向导...

    练习数据库的山寨QQ

    【数据库在山寨QQ中的应用】 在“练习数据库的山寨QQ”项目中,数据库扮演着至关重要的角色,它负责存储和管理用户之间的聊天记录、用户信息等数据,使得这个简易的通讯工具能够实现基本的消息交流功能。数据库技术...

    山寨手机MTK联发科CPU的手机驱动MT65XX类

    标题 "山寨手机MTK联发科CPU的手机驱动MT65XX类" 涉及的是针对使用联发科(MediaTek,简称MTK)处理器的山寨手机的USB驱动程序,特别是MT65XX系列。这类驱动是为了解决MTK手机与个人计算机之间的连接问题,确保数据...

    java Struts+hibernate实现的山寨版当当网系统

    Hibernate通过ORM映射文件(如.hbm.xml)或注解配置来定义这些关系。 8. **前端展示**:虽然未具体提及,但系统的前端通常会使用HTML、CSS和JavaScript来构建用户界面。可能还会涉及到AJAX技术,提供异步加载和交互...

    山寨机mtk6225手机驱动(含xp、2000、98、me等系统驱动)

    这些驱动程序允许电脑识别并正常运行连接的MTK6225手机,从而使用户能够通过USB数据线进行电脑与手机间的通信。 具体来说,安装了这套驱动后,电脑可以: 1. **识别手机**: 电脑可以通过USB接口识别到MTK6225手机...

    山寨机语音文件

    【标题】:“山寨机语音文件”这一主题主要涉及到的是手机语音技术在非正规或低成本手机(通常被称为“山寨机”)中的应用。这类设备通常在中国的一些小型制造商中生产,它们试图模仿主流品牌的功能,但价格更为亲民...

    电信计费系统(山寨版)

    【电信计费系统(山寨版)】是一款基于Java技术栈实现的计费系统,它集成了Struts2、Spring和Hibernate三个主流的开源框架,即所谓的SSH(Struts2 + Spring + Hibernate)架构。SSH框架在企业级开发中广泛应用,因其...

    myHibernate源码

    在Java中,Hibernate通过映射XML配置文件将Java对象与数据库表对应起来,使得开发者可以使用面向对象的方式来操作数据库,无需关注底层的SQL语句。myHibernate项目中的主要类和接口,如SessionFactory、Session、...

    山寨版 8139d网卡驱动 绝对能用

    这个文件可能是下载的驱动包中的主要驱动文件,用于安装和配置你的山寨版8139D网卡。 安装此类驱动的步骤通常包括: 1. 下载匹配的驱动程序包,确保文件来源可靠。 2. 解压压缩包,找到包含"RTL8139D"的驱动文件。 ...

Global site tag (gtag.js) - Google Analytics