posts - 35, comments - 0, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

数据源相关概念

Posted on 2012-01-16 09:19 timelyxyz 阅读(133) 评论(0)  编辑  收藏
  • 数据源概念
  • 数据库连接池 
  • jndi概念
  • 数据源与连接池关系
  • 数据源与jndi关系
  • jdbc基础

1.什么是数据源?

答: 数据源定义的是连接到实际数据库的一条路径而已,数据源中并无真正的数据,它仅仅记录的是你连接到哪个数据库,以及如何连接的,如odbc数据源。也就是 说数据源仅仅是数据库的连接名称,一个数据库可以有多个数据源连 接。                                                                                                                              

       在Java语言中,DataSource对象就是一个代表数据源实体的对象。一个数据源就是一个用来存储数据的工具,它可以是复杂的大型企业级数据库,也可以是简单得只有行和列的文件。数据源可以位于在服务器端,也可以位于客服端。

2.什么是数据库连接池?

答: 数据库连接是负责分配、管理和释放数据库连接。使用数据库连接池是因为数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤 为突出。如weblogic、tomcat、WebSphere容器都实现了数据库连接池,但是数据库连接池是可以独立出来自己编码实现的。

        数据库连接池在系统启动时初始化了一定量maxIdle=idlenum的数据库连接,即没有他的使用中的链接被释放的情况下,连接池中保存的最大空闲链 接数。数据库连接请求如果没有超过idle的值则直接去连接池中获取;如果超过了maxIdle的值则新建一个数据库连接;但如果数据库连接池中的连接总 数超过了maxActive=activenum则 (如下处理);

    
  1   直接抛错  
  2   让想要借出连接的线程等待一段时间,如果等不到,再抛错  
  3   每隔一段检查一次pool,直到有可用连接,否则一直等下去  
  4   永远可以拿到(视情况需要maxActive不设置或0或负)  

但当没有可以使用的数据库链接的时候,连接池将要等待一个链接被返回的最长时间(毫秒)maxWait=waitnum,超过这个时间就要抛出异常。

3.什么是jndi?

答:jndi全称是java naming and directory interface。简单点就是你按命名规则给一个东西命名然后你就可以通过该名字在特定环境下直接查找到该东西了。

JNDI 是用于向Java程序提供目录和命名功能的API。可以简单地把JNDI理解为一种将对象和名字绑定的技术,对象工厂负责生产出对象,这些对象都和惟一的 名字绑定。外部程序可以通过名字来获取对某个对象的引用。在一个文件系统中,文件名被绑定给文件。在DNS中,一个IP地址绑定一个URL。在目录服务 中,一个对象名被绑定给一个对象实体。

在Intranets(企业内部网)和Internates(互联网)中 目录服务(Directory service)都非常重要,它规范了命名规则,让人们容易理解实体及之间的关系。JNDI是Java平台的一个标准扩展,提供了一组接口、类和关于命名 空间的概念。JNDI目前所支持的技术包括LDAP、CORBA Common Object Service(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。

jndi被设计成独立于特定的目录服务,所以各种各样的目录都可以通过相同的方式进行访问。这样使用jndi的java程序员不仅可以获得统一规整的命名和目录,而且可以通过多层的命名方案无缝访问(seamless acess)目录对象。

4.数据源与数据库连接池关系?

答: 我们通过第三方工具来使用数据源来实现对数据库数据操作。一个数据库连接池可以给它创建多个数据源,如一个人有别名;如果单纯使用jdbc连接数据库是 web容器你要什么就去连什么。这样做没人看不耗内存,量大了你就死机。可以这样理解,数据源表示一个与数据库的连接(传统)或者表示很多与数据库的连接 (使用数据库连接池)。数据源是用于访问连接池或多池的JNDI对象,多池的主要目的是提高可用性和在一组连接池间实现负载均衡。

5.数据源与jndi关系?

答:数据源是在JDBC 2.0中引入的一个概念。 在JDBC 2.0扩展包中定义了javax.sql.DataSource接口来描述这个概念。如果用户希望建立一个数据库连接,通过查询在JNDI服务中的数据 源,可以从数据源中获取相应的数据库连接。这样用户就只需要提供一个逻辑名称(Logic Name),而不是数据库登录的具体细节。即DataSource采用Java的JNDI技术,来获得DataSource对象的引用。当然各种web容 器把DataSource作为一种可以配置的JNDI资源来处理如tomcat。生成DataSource对象的工厂为 org.apache.commons.dbcp.BasicDataSourceFactory。

6.jdbc基础

答:java database connectivity standard 是一套规范的面向应用程序的接口,通过它可以访问各类关系数据库。各个数据库会实现该接口作为驱动如jtds.jar,当然可以自己写实现。

jdbc 是低级api,提供访问数据库的接口,是构建高级api的基础,利用纯java编写可以在任何操作系统任何java环境下工作。JDBC API 中定义了一些Java类分别用来表示与数据库的连接(connections), SQL语句(SQL statements), 结果集(result sets)以及其它的数据库对象, 使得Java程序能方便地与数据库交互并处理所得的结果。

使用JDBC, 所有Java程序(包括Java applications , applets和servlet)都能通过SQL语句或存储在数据库中的过程(stored procedures)来存取数据库。要通过JDBC来存取某一特定的数据库,必须有相应的JDBC driver,它往往是由生产数据库的厂家提供,是连接JDBC API与具体数据库之间的桥梁。JDBC driver 是用于特定数据库的一套实施了JDBC接口的类集。

简单的说,jdbc可以做三件事:与数据库建立连接,发送sql语句,处理结果。jdbc可以理解为odbc的纯java语言和面向对象的实现。

7.数据库访问方法?

答:在ASP中可以通过三种方式访问数据库:
1、IDC(Internet Database Connector)方式;
2、ADO(ActiveX Data Objects)方式;
3、RDS(Remote Data Service)方式。
        在jsp中访问数据库常用:
1、JDBC-ODBC桥接器;
2、特定数据库的jdbc驱动直接连接数据库;
3、经过池化维护一定量的连接数目,用jndi去访问数据源对应池获取连接;

 

参考:http://www.diybl.com/course/7_databases/database_other/2008126/97740.html


只有注册用户登录后才能发表评论。


网站导航: