What is DataSource?

作为 DriverManager 设施的替代项,DataSource 对象是获取连接的首选方法。实现DataSource 接口的对象通常在基于 Java(TM) Naming and Directory Interface (JNDI) API 的命名服务中注册。增强程序的可移植性;DataSource是一种方便的手段.

DataSource 接口由驱动程序供应商实现。共有三种类型的实现:

1.         基本实现 - 生成标准 Connection 对象(此时DataSource的作用与DriverManager完全一样)。

2.         连接池实现 - 生成自动参与连接池的 Connection 对象。此实现与中间层连接池      管理器一起使用。

3.         分布式事务实现 - 生成一个 Connection 对象,该对象可用于分布式事务,并且几乎始终参与连接池。此实现与中间层事务管理器一起使用,并且几乎始终与连接池管理器一起使用。

取数据库连接的方式

1.        第一种:

Class.forName("数据库驱动类的名字");// 注册

Connection con = DriverManager.getConnection(url,userName,password);

编码本身对底层的数据源很依赖,可移植性差

2.        第二种:

Context ctx = new InitialContext();

DataSource ds = (DataSource)ctx.lookup("jdbc/tarena");

Connection con = ds.getConnection();

DataSource接口主要方法:getConnection()返回一个数据库连接。

DataSource实现类主要方法:

setURL(String url);

setUser(String user);

setPassword(String password);

可移植性好,缺点:会增加应用开发的复杂性,因为使用它的时候要提供以各应用服务器的支持。

例子:

       Mysql版本

    public static Connection getMysqlConnectionThruDataSource()

throws SQLException {

MysqlDataSource ds = new MysqlDataSource();

ds.setURL("jdbc:mysql://localhost:3306/tarena");

ds.setUser("narci");

ds.setPassword("11");

return ds.getConnection();

}

Oracle版本

public static Connection getOracleConnectionThruDataSource()

throws SQLException {

OracleDataSource ds = new OracleDataSource();

String url = "jdbc:oracle:thin:@192.168.0.100:1521:tarena";

String username = "tarena";

String password = "tarena";

ds.setURL(url);

ds.setUser(username);

ds.setPassword(password);

return ds.getConnection();

}

http://blog.163.com/muyexin@126/blog/static/399680832010819105528741/

JDBC DataSource的更多相关文章

  1. org.springframework.jdbc.datasource

    org.springframework.jdbc.datasource.DataSourceUtils /** * Actually obtain a JDBC Connection from the ...

  2. java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy

    问题:Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationCont ...

  3. 理解JNDI中 java:comp/env/jdbc/datasource 与 jdbc/datasource 的不同之处(转)

    在描述JNDI,例如获得数据源时,JNDI地址有两种写法,例如同是  jdbc/testDS 数据源: A:java:comp/env/jdbc/testDS B:jdbc/testDS   这两种写 ...

  4. Tomcat中用JNDI方式加载JDBC DataSource以连接数据库

    概括一下,大致分为四步:安装驱动,填充context.xml,填充web.xml,编写程序取得连接.通过一个小DEMO对这种配置方式有了一点了解,以tomcat6.0连接mysql5.0.8数据库为例 ...

  5. 【错误解决】Error creating bean with name 'transactionManager' :nested exception is java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/

    搭建ssh框架中新建JUint测试出现的问题.这个问题实在太伤脑筋....因为不好找到解决办法 直接先说解决方式:添加org.springframework.jdbc-XX.jar,然后build p ...

  6. spring实例化dataSource使用jndi和jdbc两种方式

    一.使用jndi的方式 这种方式方便测试人员不需要改代码,直接改变tomcat的server.xml就可以更改数据库连接 spring创建bean <bean id="dataSour ...

  7. Java Spring Boot: Unable to determine jdbc url from datasource

    如果你和我一样从github或码云上下载了一个几年前别人写的demo代码,想用来做学习用.编译的时候遇到下面这样的错误,然后死命上网查各种方案,百试不灵.试尽了各种方案,就是还连接不上数据库.你可以试 ...

  8. 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】

    一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...

  9. Spring的JDBC模板

    Spring对持久层技术支持 JDBC : org.springframework.jdbc.core.JdbcTemplate Hibernate3.0 : org.springframework. ...

随机推荐

  1. 51nod 1657 电子龟

    电子龟的行动,是沿着直线左右走动的.他能够接受两种指令,“T”(向后转,即如果面向左,改成向右:否则就向左)和“F”(向当前面朝的方向往前移动一个单位距离). 现在给出一串指令,让电子龟来执行.你必须 ...

  2. markdown种嵌入html标签,实现自定义样式

    转:https://www.cnblogs.com/buwuliao/p/9578918.html -------------------------------------------------- ...

  3. 采集新浪新闻php插件

    今天没事,就分享一个采集新浪新闻PHP插件接口,可用于火车头采集,比较简单,大家可以研究! 新浪新闻实时动态列表为:https://news.sina.com.cn/roll/?qq-pf-to=pc ...

  4. shellshock溢出攻击

    实验背景 2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在本地触发.在本实验中,需要亲手重现攻击来理解该漏洞,并回答一些问题. 什么 ...

  5. oracel: 通过特殊表序列来实现oracle自增id (mybatis实现自增id)

    本项目结合mybaits来使用. 加入有一个用户表:sys_user, 自增id为user_id. 怎么来实现id的自增呢? 通过sql语句select * from user_sequences,检 ...

  6. Tensorflow细节-P194-组合训练数据

    import tensorflow as tf files = tf.train.match_filenames_once("data.tfrecords-*") filename ...

  7. Acwing P277 饼干 题解

    每日一题 day20 打卡 Analysis 线型动态规划 读入每个人的贪婪度之后,对其按照从大到小的顺序排序,定义状态f[i][j]为前i个人(排序后)分j个饼干的答案,那么答案为f[n][m],考 ...

  8. 015_Python3 迭代器与生成器

    迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退 ...

  9. learning java Objects.requireNonNull 当传入参数为null时,该方法返回参数本身

    System.out.println(Objects.hashCode(obj)); System.out.println(Objects.toString(obj)); System.out.pri ...

  10. 机器学习---用python实现最小二乘线性回归算法并用随机梯度下降法求解 (Machine Learning Least Squares Linear Regression Application SGD)

    在<机器学习---线性回归(Machine Learning Linear Regression)>一文中,我们主要介绍了最小二乘线性回归算法以及简单地介绍了梯度下降法.现在,让我们来实践 ...