spring datasource oracle,20200107——记spring的DataSource

spring项目中总要跟数据库打交道,其中怎么连接数据库的方法都有很多,大概分为3类:

1) 通过JNDI获取应用服务器(如JBOSS, Tomcat) 的数据源

2)  Spring容器中直接配置数据源

3)代码直接创建数据源,这个一般用于单元测试

然后每种都来记一记:

一:  JNDI获取应用服务器的数据源

首先应用服务器里要定义好数据源,例如JBoss:

jboss/v6.3.0.8.0/standalone/configuration/standalone.xml

这里的JNDI-name="java:/jdbc/OracleDS"

jdbc:oracle:thin:@test:1521:bb

oracle.jdbc.driver.OracleDriver

oracle

20

UA_AUTHENTICATION_INFO

然后到spring项目中,有2中方式获取应用服务器的数据源:

第一种是:JndiObjectFactoryBean,如:

第二种是jee命名空间jndi-lookup,如

xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xmlns:jee=http://www.springframework.org/schema/jee

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

http://www.springframework.org/schema/jee

http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">

上面2中,都用到了jndi-name="java:/jdbc/OracleDS",就是上面应用服务器的数据源定义。

二:  spring容器中配置数据源

利用第三方依赖包,一个是apache的DBCP,一个是C3P0。

DBCP:

C3P0:

到底谁好,后续再学再记。

三:代码自己实现连接

1) 通过DriverManager, 位于JDK中java/sql/包下,是JDBC1.0,需要硬性编码驱动,不支持连接池,代码如:

//此处的Class.forName删掉,intellij 也能跑成功,所以这句要不要后续待查

Class.forName("com.mysql.jdbc.Driver");try{

Connection connection=DriverManager.getConnection(DB_URL, USER, PASS);

Statement statement=connection.createStatement();

}catch(SQLException e) {

e.printStackTrace();

}

2) 通过各种DataSource实现类

DataSource是一个接口,有很多实现DataSource接口,如上面的DBCP的BasicDataSource,C3P0中的ComboPooledDataSource,都是实现了这个接口,还有spring 自带了 DriverManagerDataSource,还有Oracle的OracleDataSource.

所以这些实现类都可以直接在类中使用来创建连接

DBCP:

BasicDataSource ods= newBasicDataSource();

ods.setUrl("jdbc:oracle:thin:@test:1521:ua");

ods.setUsername("test");

ods.setPassword("test");

Connection conn=ods.getConnection();

C3P0:

ComboPooledDataSource ods = newComboPooledDataSource();

ods.setJdbcUrl("jdbc:oracle:thin:@test:1521:ua");

ods.setUser("test");

ods.setPassword("test");

Connection conn= ods.getConnection();

Spring 的DriverManagerDataSource

DriverManagerDataSource ods = new DriverManagerDataSource ();

ods.setUrl("jdbc:oracle:thin:@test:1521:ua");

ods.setUsername("test");

ods.setPassword("test");

Connection conn = ods.getConnection();

当然也可以直接用具体数据库驱动里的,比如Oracle和MySql

Oracle的OracleDataSource

OracleDataSource ods = new OracleDataSource();

ods.setUrl("jdbc:oracle:thin://localhost:3309/sampledb");

ods.setUsername("root");

ods.setPassword("1234");

Connection actualCon = ods.getConnection();

MySql:

OracleDataSource ods = new MysqlDataSource();

ods.setUrl("jdbc:mysql://localhost:3309/sampledb");

ods.setUsername("root");

ods.setPassword("1234");

Connection actualCon = ods.getConnection();

上面的BasicDataSource是可以解决不同数据库不同操作dataSource, 具体可以参考:

https://www.journaldev.com/2509/java-datasource-jdbc-datasource-example

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值