一、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 是一个流行的关系对象映射(ORM)框架,它允许 Java 开发人员将数据库操作与对象模型相结合,极大地简化了数据访问层的开发工作。在“山寨版 Hibernate”的实现中,作者可能会探讨如何构建类似的 ORM 解决...
山寨传声——欢乐的山寨——《瑶山乐》.doc
MT6228驱动是针对山寨手机中常见的一种芯片组——MT6228的驱动程序。MT6228是一款由联发科(Mediatek)公司设计的单芯片解决方案,主要用于低成本的智能手机和平板电脑。这款芯片集成了基带处理器、射频收发器以及...
- **实体类**:Hibernate通过注解或XML配置文件定义实体类,这些类对应数据库中的表。 - **Session接口**:Session是与数据库交互的主要接口,负责CRUD(创建、读取、更新、删除)操作。 - **Criteria查询**和**HQL*...
“山寨”现象反思——从知识产权法角度.doc
【Java实习报告——山寨QQ聊天工具设计】 这份实习报告详细记录了一个基于Java的简易聊天系统的开发过程,项目名为"My_QQ",旨在模仿QQ的基本功能,包括登录、注册、单人及多人聊天,并且退出应用。这个项目是针对...
总结起来,这个压缩包提供的内容似乎涵盖了MTK山寨手机驱动的下载、安装以及音频设置的调整,对于拥有此类设备的用户来说,是一个宝贵的资源。在使用过程中,用户应仔细阅读说明文件,遵循指导步骤,以确保驱动安装...
1. **词法分析**:这是解析过程的第一步,将输入字符串分割成一个个有意义的部分,如数字、运算符和括号。这可能通过正则表达式或自定义的扫描器实现。 2. **语法分析**:词法分析后的令牌流需要被转换成抽象语法树...
"txt"文件可能是关于如何下载和使用驱动的说明,而".url"文件则是一个快捷方式,可以直接打开浏览器访问西西软件园的网页,以便查找更多相关的驱动更新或技术支持。 总的来说,MTK串口驱动是连接和管理山寨机的关键...
根据压缩包子文件的文件名称“PL2303”,我们可以推测这个压缩包内可能包含的是PL2303芯片的老版本驱动程序安装文件或其他相关配置文档。用户在下载并解压这个文件后,按照指示安装驱动程序,就可以解决山寨开发板上...
至于压缩包子文件的文件名称列表只有一个条目——"手机万能驱动",这可能是指该压缩包内包含了一个名为"手机万能驱动"的安装文件,用户只需解压后运行即可安装驱动。通常,这样的驱动安装程序会包含驱动库、安装向导...
【数据库在山寨QQ中的应用】 在“练习数据库的山寨QQ”项目中,数据库扮演着至关重要的角色,它负责存储和管理用户之间的聊天记录、用户信息等数据,使得这个简易的通讯工具能够实现基本的消息交流功能。数据库技术...
标题 "山寨手机MTK联发科CPU的手机驱动MT65XX类" 涉及的是针对使用联发科(MediaTek,简称MTK)处理器的山寨手机的USB驱动程序,特别是MT65XX系列。这类驱动是为了解决MTK手机与个人计算机之间的连接问题,确保数据...
Hibernate通过ORM映射文件(如.hbm.xml)或注解配置来定义这些关系。 8. **前端展示**:虽然未具体提及,但系统的前端通常会使用HTML、CSS和JavaScript来构建用户界面。可能还会涉及到AJAX技术,提供异步加载和交互...
这些驱动程序允许电脑识别并正常运行连接的MTK6225手机,从而使用户能够通过USB数据线进行电脑与手机间的通信。 具体来说,安装了这套驱动后,电脑可以: 1. **识别手机**: 电脑可以通过USB接口识别到MTK6225手机...
【标题】:“山寨机语音文件”这一主题主要涉及到的是手机语音技术在非正规或低成本手机(通常被称为“山寨机”)中的应用。这类设备通常在中国的一些小型制造商中生产,它们试图模仿主流品牌的功能,但价格更为亲民...
【电信计费系统(山寨版)】是一款基于Java技术栈实现的计费系统,它集成了Struts2、Spring和Hibernate三个主流的开源框架,即所谓的SSH(Struts2 + Spring + Hibernate)架构。SSH框架在企业级开发中广泛应用,因其...
在Java中,Hibernate通过映射XML配置文件将Java对象与数据库表对应起来,使得开发者可以使用面向对象的方式来操作数据库,无需关注底层的SQL语句。myHibernate项目中的主要类和接口,如SessionFactory、Session、...
这个文件可能是下载的驱动包中的主要驱动文件,用于安装和配置你的山寨版8139D网卡。 安装此类驱动的步骤通常包括: 1. 下载匹配的驱动程序包,确保文件来源可靠。 2. 解压压缩包,找到包含"RTL8139D"的驱动文件。 ...