再次深入探索datasource问题?

datasource现在几乎每个web框架都会有集成,但是对于数据源的设计原理以及应用上,很少进行深入的研究;实际上数据源也是web框架的核心之一了解一下其内涵还是非常重要的。

数据源(Data Source)顾名思义,数据的来源,是提供某种所需要数据的器件或原始媒体。在数据源中存储了所有建立数据库连接的信息。就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数据源名称,你可以找到相应的数据库连接。

根据这样的定义,那么我们就应该先了解一下数据库连接;数据库连接在各种编程语言都有自己的实现,简单的如JDBC:

public static void main(String[] args) {
Scanner in =new Scanner(System.in);

Connection conn = null;
Statement st = null; // 用于执行SQL语句的对象,当然还有其他的对象也可以用于执行SQL语句

try {

Class.forName("oracle.jdbc.driver.OracleDriver");// 加载数据库驱动包,这里是Oracle的驱动包

conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","scott");

// url 连接数据库的地址类似的如:

//"jdbc:mysql://localhost/test?user=root&password=root&useUnicode=true&&characterEncoding=gb2312&autoReconnect = true";

//简单写法:url = //"jdbc:myqsl://localhost/test(数据库名)? user=root(用户)&password=root(密码)";


String name = in.next();
String date = in.next();
String sql = "update student set stu_name='"+name+"',stu_birthday=to_date('"+date+"','yyyy-mm-dd') where stu_id=7";
System.out.println(sql);


st = conn.createStatement();

int num = st.executeUpdate(sql);
if(num>0){
System.out.println("修改成功");
}


} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{

try {
if(st!=null)
st.close();

if(conn!=null)
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



}
System.out.println("程序结束");


}

实际上我们无论使用哪种持久化技术,都需要通过数据连接来访问数据库;而数据连接在大多数web框架中都是通过数据源获得;如spring,既可以通过JNDI获取应用服务器的数据源,也可以直接在Spring容器中配置数据源,此外,你还可以通过代码的方式创建一个数据源,以便进行无依赖的单元测试配置一个数据源。

常见的web框架数据源配置方式都是通过在config文件中配置相应的需要访问的数据库信息,并将配置信息加载到某个数据源中如:HikariDataSource;以及注册相应的数据库驱动等等。当然也有在xml配置文件中配置相应的数据源,并注册所有的相关信息如spring的配置。

通过分析基本可以看出数据源类似一个载体,里面包含我们需要访问某个数据库的连接等等信息;而在各种web框架的实现上都可以看成是JDBC的衍生。

原文地址:https://www.cnblogs.com/monion/p/5022108.html