转自:http://www.blogjava.net/hongqiang/archive/2012/08/08/385091.html
声明:本人转载只为分享,如涉及商业版权纠纷,请及时与本人联系,必将立即删除,造成不便,还望见谅,谢谢。
本文主要简述的内容有单例设计模式、dom4j解析xml文件(这里解析的数据库的配置文件)、通过解析出来的配置信息完成数据库的连接。
1、首先要看的是单例设计模式
单例设计模式的实现有两种:饿汉式(预先加载)、懒汉式(延迟加载),下面分别来看这两种实现方式。
(1)、饿汉式(预先加载)
public class Singleton{
private static Singleton instance = new Singleton();
private Singleton(){}
public static synchronized Singleton getInstance(){
return instance;
}
}(2)懒汉式(延迟加载)
public class Singleton{
private static Singleton instance = null;
private Singleton(){}
public static synchronized Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
观察上面的这两种模式,看起来区别并不大,前一种方式是类一旦加载就得将对象实例化了,而后一种则是在使用的时候才进行判断是否要实例化对象,并且在后一种的getInstance方法中加入了同步,这样显得更加的合理,个人更加偏好于使用第二种方式。
2、使用dom4j来完成数据库配置文件的解析
给出下面这个数据库的配置文件sys-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<db-info>
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@127.0.0.1:1521:ORCL</url>
<user>username</user>
<password>password</password>
</db-info>
</config>
完成解析的java类:
(1)、保存数据库jdbc配置信息的模型类JdbcConfig.java
package org.ml.drp.util;
/**
* 用于保存数据库连接时的jdbc参数
*
* @author MuLing
*
*/
public class JdbcConfig {
private String DbDriver;
private String DbUrl;
private String DbUser;
private String DbPass;
public String getDbDriver() {
return DbDriver;
}
public void setDbDriver(String dbDriver) {
DbDriver = dbDriver;
}
public String getDbUrl() {
return DbUrl;
}
public void setDbUrl(String dbUrl) {
DbUrl = dbUrl;
}
public String getDbUser() {
return DbUser;
}
public void setDbUser(String dbUser) {
DbUser = dbUser;
}
public String getDbPass() {
return DbPass;
}
public void setDbPass(String dbPass) {
DbPass = dbPass;
}
@Override
public String toString() {
return "JdbcConfig [DbDriver=" + DbDriver + ", DbUrl=" + DbUrl
+ ", DbUser=" + DbUser + ", DbPass=" + DbPass + "]";
}
}
(2)、解析数据库配置文件的工具类XmlConfigReader.java,这里使用单例模式完成,采用的是懒汉式。
package org.ml.drp.util;
import java.io.InputStream;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* 用于解析xml文件
* @author MuLing
*
*/
public class XmlConfigReader {
private JdbcConfig jdbcConfig = null;
private static XmlConfigReader instance = null;
private XmlConfigReader(){
SAXReader reader = new SAXReader();//取得SAXReader的对象
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");//得到输入流对象
jdbcConfig = new JdbcConfig();
Document doc = null;
try {
doc = reader.read(input); //进行读取
} catch (DocumentException e) {
e.printStackTrace();
}
//取得对应的节点对象
Element driverEle = (Element)doc.selectObject("/config/db-info/driver");
Element urlEle = (Element)doc.selectObject("/config/db-info/url");
Element userEle = (Element)doc.selectObject("/config/db-info/user");
Element passwordEle = (Element)doc.selectObject("/config/db-info/password");
jdbcConfig.setDbDriver(driverEle.getStringValue());
jdbcConfig.setDbUrl(urlEle.getStringValue());
jdbcConfig.setDbUser(userEle.getStringValue());
jdbcConfig.setDbPass(passwordEle.getStringValue());
}
public static synchronized XmlConfigReader getInstance(){
if(instance==null){
instance = new XmlConfigReader();
}
return instance;
}
public JdbcConfig getJdbcConfig(){
return this.jdbcConfig;
}
}
3、根据解析出了的配置信息完成数据库的连接
下面是一个完成数据库连接操作的测试工具类DbUtil.java
package org.ml.drp.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* 封装数据库常用操作类
* @author MuLing
*
*/
public class DbUtil {
/**
* 取得数据库的连接
* @return
*/
public static Connection getConnection(){
Connection conn = null;
//取得数据库连接字符串
JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();
String DBDRIVER = jdbcConfig.getDbDriver();
String DBURL = jdbcConfig.getDbUrl();
String DBUSER = jdbcConfig.getDbUser();
String DBPASS = jdbcConfig.getDbPass();
//1:注册驱动
try {
Class.forName(DBDRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//2:获取连接
try {
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
} catch (SQLException e) {
e.printStackTrace();
}
//3:返回数据库连接
return conn;
}
//测试数据库的连接是否成功
public static void main(String args[]){
System.out.println(DbUtil.getConnection());
}
}
分享到:
相关推荐
【标题】"dom4j学生考试系统...通过学习和理解这个项目,开发者不仅可以提升DOM4J和Java编程的技能,还能了解如何在实际项目中使用XML进行数据存储,这对于理解和构建类似的基于XML的数据处理应用具有很高的参考价值。
8. **设计模式**:在处理XML与数据库交互的过程中,可能会用到工厂模式(创建数据库连接)、单例模式(管理数据库连接池)等设计模式,以提高代码的可维护性和复用性。 9. **性能优化**:大量数据导入导出时,可能...
在Java编程中,XML与Java的结合使用是相当常见的,尤其是在数据交换、配置文件、以及与数据库交互等方面。这个"xml.rar"压缩包显然包含了一些关于XML在Java环境中的应用实例。 首先,从标题和描述中我们可以推测,...
7. **XML解析器**:为了读取和写入XML文件,程序可能使用DOM(文档对象模型)、SAX(简单API for XML)或StAX(流式API for XML)等解析器。 8. **项目构建与部署**:在NetBeans中,开发者可以方便地构建和部署应用...
在快速开发框架中,Java通常通过使用设计模式(如工厂模式、单例模式)来实现模块化的代码结构,提高代码的复用性和可扩展性。 MySQL是一个广泛使用的开源关系型数据库管理系统,它与Java的集成非常紧密。在Java...
MybatisGenerator是一款强大的自动化代码生成工具,主要用于简化Mybatis框架的使用,自动生成Mapper接口、XML配置文件以及...同时,这也是一次深入学习Java编程、XML解析、数据库操作、设计模式等多方面技术的好机会。
4. **XML解析**:利用jdom或dom4j库解析配置文件`web.xml`,获取和处理项目配置信息。 5. **JDBC**:通过JDBC连接数据库,执行SQL语句,实现了数据库的增删改查操作。 6. **数据库连接池**:使用连接池如C3P0或...
10. **XML解析**:使用DOM或SAX解析XML文档,理解XML在数据交换和配置文件中的角色,以及Java如何处理XML数据。 以上案例涵盖了Java编程的多个核心领域,对于初学者和有经验的开发者来说,都是巩固基础、提升技能的...
- 设计模式运用:单例模式、工厂模式等常见模式的应用场景分析。 - 反射机制详解:运行时获取类信息并操作对象的方法。 - **实战案例分析** - MVC框架搭建:利用OOP特性构建可维护性强的Web应用。 - ORM技术实践...
- 单例模式、工厂模式、观察者模式等常见设计模式的Java实现。 这些源代码示例为开发者提供了丰富的实践机会,通过对这些代码的学习和调试,可以加深对Java编程的理解,提升编程技能,并为实际项目开发打下坚实...
4. `dom4j-1.6.1.jar`:DOM4J是一个流行的XML处理库,Hibernate用它来读写XML配置文件。 5. `javassist.jar`:另一种用于字节码操作的库,Hibernate也可以使用它来生成代理类。 6. `commons-collections.jar`:...
11. **单例模式与枚举**:设计模式中的单例模式,以及枚举类型在Java中的使用。 实验报告中包含的两个具体问题示例展示了如何运用Java解决实际问题: 1. **出现次数最多的数**:该问题使用ArrayList存储输入的整数...
- XML:熟悉XML文档结构,了解如何使用DOM或SAX解析XML文档。 - Linux:掌握Linux的基本命令,了解如何在Linux环境下安装和配置Java运行环境。 通过这份简历样本,我们可以看出一个合格的Java工程师不仅需要具备...
开发者还计划进一步完善该项目,未来可能会增加对其他数据库系统的支持,同时,他还提到了使用XML来保存数据,XML是一种常见的数据存储和交换格式,因其结构清晰、易于解析,常用于配置文件或数据备份。 关于Java...
答:单例模式是一种比较常见的设计模式,带给我们以下好处: 1:控制资源的使用 2:控制实例的产生数量 3:让多个不相关的两个线程或进程之间实现通信 为什么要用spring? 答:1、主要将各个框架有效的联系起来...
例如,在用户数据管理中使用单例模式,确保全局唯一的数据源。 2. **MVC模式**:模型(Model)-视图(View)-控制器(Controller),是Web开发中最常用的架构模式之一,用于分离业务逻辑、数据和界面展示。 3. **工厂模式*...
6. **设计模式**:在大型项目中,设计模式如单例模式、工厂模式、观察者模式等会广泛应用,以提高代码的可维护性和可扩展性。 7. **数据库操作**:为了存储用户信息、聊天记录等,项目可能使用MySQL或其他关系型...