`
fengfeng925
  • 浏览: 105140 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过Properties类读取配置文件封装Connection

阅读更多
一般在开发的时候,数据库的连接信息通常写在配置文件中,包括xml文件或者properties文件。而不是在每次连接的时候都要读取配置获得connection,封装的方法有许多,这里只介绍一种,通过Properties类对配置文件进行操作,从而达到封装connection的目的。

好了,首先properties文件中是Oracle数据库的连接信息,具体如下
driver oracle.jdbc.OracleDriver
url jdbc:oracle:thin:@localhost:1521:orcl
user scott
password tiger


好了,接下来我写一个工厂类来读取配置文件,从而对connection进行封装。具体代码如下
package org.whatisjava.project1.sevice.impl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

public class ConnectionFactory {
	private static String url;
	private static String driver;
	private static String user;
	private static String password;

	static {
		try {
			Properties props = new Properties();

			props.load(ConnectionFactory.class.getClassLoader()
					.getResourceAsStream("db.properties")); //得到当前类的类加载器,以流的方式读取配置文件

			driver = props.getProperty("driver");
			url = props.getProperty("url");
			user = props.getProperty("user");
			password = props.getProperty("password");

			Class.forName(driver); //加载驱动程序

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	//返回Connection
	public static Connection getConnection() throws Exception{
		try {
			Connection con = DriverManager.getConnection(url, user, password);
			return con;
		} catch (Exception e) {
			return null;
		}

	}
}



返回connection后,就可以在dao层对数据库进行CRUD操作了。
分享到:
评论
12 楼 b5158488 2009-10-27  
很老的例子了吧
11 楼 putonyuer 2009-10-23  
关键点 就在这句上


props.load(ConnectionFactory.class.getClassLoader()  
                    .getResourceAsStream("db.properties")); //得到当前类的类加载器,以流的方式读取配置文件  


10 楼 cn-done 2009-10-22  
lzyzizi 写道
public static Connection getConnection() throws Exception{  
        try {  
            Connection con = DriverManager.getConnection(url, user, password);  
            return con;  
        } catch (Exception e) {  
            return null;  
        }  
 
    } 

楼主在方法里把exception catch掉了,为什么还在方法的声明上抛出异常呢?


这位同学喜欢找钉子哇。
分析思想就可以了,深究问题大大的有。
9 楼 treblesoftware 2009-10-22  
love182055084 写道
treblesoftware 写道
storm0912 写道
数据库连接最好通过应用服务器来配置。然后通过jndi来访问。这样既可以避免暴露连接信息,又可以将连接池,事务等任务交给应用服务器管理。


您说的是 数据服务器 与 应用分离?

还是  数据服务器 与 应用合在一台机器上,通过jndi访问?


在不在同一台机器上跟通过jndi来访问有关系么?


通过网络通信不能不记网络造成的性能下降。
8 楼 fengfeng925 2009-10-22  
elvishehai 写道
Properties的功能不只是你说的这点吧,好像大多数人都拿别人想法在做来做去的,大家都知道什么Dao.及dao的连接方式! 有时候说多了没意思啊,

恩,我就是拿你的想法来做东西的。
7 楼 elvishehai 2009-10-22  
Properties的功能不只是你说的这点吧,好像大多数人都拿别人想法在做来做去的,大家都知道什么Dao.及dao的连接方式! 有时候说多了没意思啊,
6 楼 whaosoft 2009-10-22  
谢谢,又复习了一下Properties类的使用
5 楼 love182055084 2009-10-22  
treblesoftware 写道
storm0912 写道
数据库连接最好通过应用服务器来配置。然后通过jndi来访问。这样既可以避免暴露连接信息,又可以将连接池,事务等任务交给应用服务器管理。


您说的是 数据服务器 与 应用分离?

还是  数据服务器 与 应用合在一台机器上,通过jndi访问?


在不在同一台机器上跟通过jndi来访问有关系么?
4 楼 treblesoftware 2009-10-22  
storm0912 写道
数据库连接最好通过应用服务器来配置。然后通过jndi来访问。这样既可以避免暴露连接信息,又可以将连接池,事务等任务交给应用服务器管理。


您说的是 数据服务器 与 应用分离?

还是  数据服务器 与 应用合在一台机器上,通过jndi访问?
3 楼 lzyzizi 2009-10-22  
public static Connection getConnection() throws Exception{  
        try {  
            Connection con = DriverManager.getConnection(url, user, password);  
            return con;  
        } catch (Exception e) {  
            return null;  
        }  
 
    } 

楼主在方法里把exception catch掉了,为什么还在方法的声明上抛出异常呢?
2 楼 fengfeng925 2009-10-20  
storm0912 写道
数据库连接最好通过应用服务器来配置。然后通过jndi来访问。这样既可以避免暴露连接信息,又可以将连接池,事务等任务交给应用服务器管理。

通过框架配置或者容器封装谁都清楚,我写这个只是在纯用jdbc,不用框架的时候来进行简单封装的一种方法,并没有上升到企业开发的高度。
1 楼 Angel_Night 2009-10-19  
很认真的看了下 不是挖坟

相关推荐

Global site tag (gtag.js) - Google Analytics