数据库、数据源、数据库连接池、JDBC,JNDI等知识点整理

很多java软件开发者初学者,在学习数据库与java应用程序时,难免会遇到一些困扰,现在根据自己的学习和应用,为大家简单整理了一些资料,希望能帮助到大家,不足之处还望指正。

本文章为大家介绍一下相关概念及应用联系。关于JDBC、数据库连接池、JNDI等知识的详细配置和使用,会在接下来的博客中为大家具体介绍


简单介绍一下数据库概念

1.数据库(Database)

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,当前使用最多的是关系型数据库,常见数据库软件包括:oracle,mysql,postgresql,DB2,SQL SERVER….


2.数据库管理系统(Database Management System)



认识数据库之后,马上在java的应用程序中使用JDBC调用数据库

3.java数据库连接(Java Data Base Connectivity,即JDBC)

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。


数据库、数据源、数据库连接池、JDBC,JNDI等知识点整理



JDBC的实现步骤(联接DBMS):

加载JDBC驱动程序 →建立数据库连接Connection → 创建执行SQL的语句Statement → 处理执行结果ResultSet → 释放资源

①导入相关数据库驱动的jar包文件

我们的java应用程序要想访问数据库,必须要通过相应的数据库驱动程序,通过驱动程序去和数据库打交道。其实也就是数据库厂商的JDBC接口实现,即对Connection等接口的实现类的jar文件。

mysql的驱动jar包mysql-connector-java-XX.XX.XX:下载地址https://dev.mysql.com/downloads/connector/j/

oracle的驱动jar包ojdbcXX.jar:http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html


②装载驱动程序

加载 Driver 类后,它们即可用来与数据库建立连接。

调用 Class.forName 将自动加载驱动程序类,只需要非常简单的一行代码。

Class.forName(“XXX.XXX.XXX”);

  Driver接口由数据库厂家提供,作为java开发人员,只需要使用Driver接口就可以了。在编程中要连接数据库,必须先装载特定厂商的数据库驱动程序,不同的数据库有不同的装载方法。如:

  装载MySql驱动:Class.forName(“com.mysql.jdbc.Driver”);

  装载Oracle驱动:Class.forName(“oracle.jdbc.driver.OracleDriver”);

从上述JDBC实现步骤发现,所有的用户都需要经过此五步进行操作,但是这五步之中有三步(加载数据库驱动程序、连接数据库、关闭数据库,释放连接)对所有人都是一样的,而所有人只有在操作数据库上是不一样,那么这就造成了性能的损耗。 那么最好的做法是,准备出一个空间,此空间里专门保存着全部的数据库连接,以后用户用数据库操作的时候不用再重新加载驱动、连接数据库之类的,而直接从此空间中取走连接,关闭的时候直接把连接放回到此空间之中。 那么此空间就可以称为连接池(保存所有的数据库连接)

所以在实际应用开发中,数据源和数据库连接池的应用就显得尤为重要。

4.数据源(DataSource

Java中的数据源就是javax.sql.DataSource。DataSource的创建可以有不同的实现。DataSource 通常被称为数据源,它包含连接池和连接池管理两个部分,习惯上也经常把 DataSource 称为连接池。(copy from 《数据源和数据库连接池》)

每一个数据库实例里面包含多张table,多个存储过程,多个索引,多个约束等,而每个表里面都有很多字段列。数据源所依附的对象是数据库软件(oracle,mysql…),只要安装有这个软件就有数据源,不管你有没有创建自己的数据库实例,数据源都是存在的而且一般一个数据库软件都会只有一个数据源。数据源包含两个部分:连接池和连接管理。

5.数据库连接池

连接池基本的思想,原理:

  在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。数据库连接池负责分配②使用数据库连接池优化程序性能(图解)

—–

JNDI数据源配置:

在server.xml中添加全局JNDI数据源配置,在<GlobalNamingResources>下继续添加<Resource>标签,或者在context.xml中添加<Resource>标签,常见的几个数据库的配置如下所示: <!–配置Oracle数据库的JNDI数据源–> <Resource         name=”jdbc/oracle”         auth=”Container”         type=”javax.sql.DataSource”         maxActive=”100″         maxIdle=”30″         maxWait=”10000″         username=”lead_oams”         password=”p”         driverClassName=”oracle.jdbc.driver.OracleDriver”         url=”jdbc:oracle:thin:@192.168.1.229:1521:lead”/>   <!–配置MySQL数据库的JNDI数据源–> <Resource         name=”jdbc/mysql”         auth=”Container”         type=”javax.sql.DataSource”         maxActive=”100″         maxIdle=”30″         maxWait=”10000″         username=”root”         password=”root”         driverClassName=”com.mysql.jdbc.Driver”         url=”jdbc:mysql://192.168.1.144:3306/leadtestseUnicode=true&amp;characterEncoding=utf-8″/>

备注:TOMCAT默认使用的是DBCP数据库连接池,所以上述通过JNDI获取数据源其实是TOMCAT默认使用的DBCP数据源。

java应用程序中调用如下:
// java:comp/env/为固定值,不可变更
String gENV = “java:comp/env/”;
// 上下文实例
Context ctx = new InitialContext();

// 1.获取数据源(gENV+配置中name属性值)
DataSource ds = (DataSource)ctx.lookup(gENV+”jdbc/oracle”);
// 2. 获取连接
Connection conn = ds.getConnection();

// 3.执行SQL语句
…..
// 4.关闭连接,释放资源
conn.close();
 

好了,先介绍到这里,详细使用后续介绍…………..

参照文章:http://www.cnblogs.com/lyy-2016/p/5742958.html
                  http://www.cnblogs.com/erbing/p/5805727.html

来源:Crazyer0214

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年4月6日
下一篇 2017年4月6日

相关推荐