如何创建 DataSource

如何创建 DataSource,第1张

先看看JDK中对DataSource的描述:

作为 DriverManager 工具的替代项,DataSource 对象是获取连接的首选方法。

基本实现 - 生成标准的 Connection 对象

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

简单来说,就是获取数据库连接的一个通用接口, 常见的dbcp,c3p0,druid,bonecp都是DataSource的实现.

NutDao也选用DataSource作为获取数据库连接的方式, 且只调用其无参数的getConnection()方法, 也是大部分数据库连接池唯一支持的方法.

这篇文档该怎么用?

直接书写 Java 代码

如果你只是在main方法中尝试一下NutDao的功能,那么请选取Java

通过 Nutz.Ioc 的 JSON 配置文件

Nutz项目中最常见的配置方式, 由NutIoc来管理DataSource和NutDao实例

特别强调, NutDao与NutIoc没有任何依赖关系, NutDao在NutIoc看来,只是普通的bean

通过 Nutz.Ioc 的 XML 配置文件

满足XML强迫症的程序猿, 功能与JSON配置文件类似

再特别特别强调

NutDao几乎不需要任何配置文件(只有一个nutz_jdbc_experts.js 绝大部分时间你不会遇到它!)

本文说到的js/xml文件,都是NutIoc的文件,不是NutDao的配置文件!!

不要重复创建DataSource,不要重复创建NutDao!!!!!!!

务必参考本小节末尾的提醒!!

内置的SimpleDataSource

Nutz内置,非常适合新手!!无需额外下载其他连接池,方便尝试NutDao的功能.

不要生产环境中使用这个DataSource!!

不要用它来测试NutDao的性能!!

自动加载NutDao所支持的数据库的驱动(说茄弊白了就是我们认识那几款,不就Class.forName一下嘛)

无额外依赖,适合新手试用

非连接池,配置简单

1.b.43开始提供,旧版本的Nutz可通过拷贝源文件的方式添加这个类

SimpleDataSource: 直接书写 Java 代码

import org.nutz.dao.impl.SimpleDataSource

...

SimpleDataSource ds = new SimpleDataSource()

//ds.setDriverClassName("org.postgresql.Driver")//默认加载了大部分数据库的驱动!!

ds.setJdbcUrl("jdbc:postgresql://localhost:5432/mydatabase")

ds.setUsername("demo")

ds.setPassword("123456")

...

//ds.close() // 这个DataSource不是一个连接池,所以关不关都行

SimpleDataSource: 通过 Nutz.Ioc 的 JSON 配置文件

颤或族{

dataSource : {

type : "org.nutz.dao.impl.SimpleDataSource",

fields : {

jdbcUrl : 'jdbc:postgresql://localhost:5432/mydatabase',

username : 'demo',

password : '123456'

}

}

}

SimpleDataSource: 通过 Nutz.Ioc 的 XML 配置文件

<ioc xsi:noNamespaceSchemaLocation="nutz-ioc-0.1.xsd">

<obj name="dataSource" type="org.nutz.dao.impl.SimpleDataSource">

<field name="jdbcUrl"><str>jdbc:postgresql://localhost:5432/mydatabase</str></field>

<field name="username"><str>demo</str></field>

<field name="password"><团历str>123456</str></field>

</obj>

</ioc>

附送一个完整的NutDao配置js文件

var ioc = {

dao : {

type : "org.nutz.dao.impl.NutDao",

args : [{refer:"dataSource"}]

},

dataSource : {

type : "org.nutz.dao.impl.SimpleDataSource",

fields : {

jdbcUrl : 'jdbc:postgresql://localhost:5432/mydatabase',

username : 'demo',

password : '123456'

}

}

}

如何使用这些配置? 请看文章末尾.

Druid

国产精品连接池,淘宝温少诚意出品,带强大的监控功能哦

druid : 直接书写 Java 代码

import com.alibaba.druid.pool.DruidDataSource

...

DruidDataSource dds = new DruidDataSource()

dds.setDriverClassName("org.postgresql.Driver")

dds.setUrl("jdbc:postgresql://localhost:5432/mydatabase")

dds.setUsername("enzozhong")

dds.setPassword("123")

...

dds.close() // 关闭池内所有连接

druid : 通过 Nutz.Ioc 的 JSON 配置文件

{

dataSource : {

type : "com.alibaba.druid.pool.DruidDataSource",

events : {

depose : 'close'

},

fields : {

driverClassName : "org.postgresql.Driver",

url : "jdbc:postgresql://localhost:5432/mydatabase",

username : "enzozhong",

password : "123"

}

}

}

druid: 通过 Nutz.Ioc 的 XML 配置文件

<ioc xsi:noNamespaceSchemaLocation="nutz-ioc-0.1.xsd">

<obj name="dataSource" type="com.alibaba.druid.pool.DruidDataSource">

<events>

<depose>close</depose>

</events>

<field name="driverClassName"><str>org.postgresql.Driver</str></field>

<field name="url"><str>jdbc:postgresql://localhost:5432/mydatabase</str></field>

<field name="username"><str>enzozhong</str></field>

<field name="password"><str>123</str></field>

</obj>

</ioc>

注册了 depose 事件,当整个 Ioc 容器注销时,将 真正 关闭所有池内连接

更多配置

Apache Tomcat 7 连接池

这里使用的是tomcat7新的自带连接,但是,请把其2个jar移到项目的lib中!!

直接书写 Java 代码

import org.apache.tomcat.jdbc.pool.DataSource

...

DataSource ds = new DataSource()

ds.setDriverClassName("org.postgresql.Driver")

ds.setUrl("jdbc:postgresql://localhost:5432/mydatabase")

ds.setUsername("demo")

ds.setPassword("123456")

...

ds.close() // 关闭池内所有连接

通过 Nutz.Ioc 的 JSON 配置文件

{

dataSource : {

type : "org.apache.tomcat.jdbc.pool.DataSource",

events : {

depose : 'close'

},

fields : {

driverClassName : 'org.postgresql.Driver',

url : 'jdbc:postgresql://localhost:5432/mydatabase',

username : 'demo',

password : '123456'

}

}

}

通过 Nutz.Ioc 的 XML 配置文件

<ioc xsi:noNamespaceSchemaLocation="nutz-ioc-0.1.xsd">

<obj name="dataSource" type="org.apache.tomcat.jdbc.pool.DataSource">

<events>

<depose>close</depose>

</events>

<field name="driverClassName"><str>org.postgresql.Driver</str></field>

<field name="url"><str>jdbc:postgresql://localhost:5432/mydatabase</str></field>

<field name="username"><str>demo</str></field>

<field name="password"><str>123456</str></field>

</obj>

</ioc>

注册了 depose 事件,当整个 Ioc 容器注销时,将 真正 关闭所有池内连接

关于 depose 事件,更多详情请参看 事件监听

Apache DBCP

dbcp: 直接书写 Java 代码

import org.apache.commons.dbcp.BasicDataSource

...

BasicDataSource ds = new BasicDataSource()

ds.setDriverClassName("org.postgresql.Driver")

ds.setUrl("jdbc:postgresql://localhost:5432/mydatabase")

ds.setUsername("demo")

ds.setPassword("123456")

...

ds.close() // 关闭池内所有连接

dbcp: 通过 Nutz.Ioc 的 JSON 配置文件

{

dataSource : {

type : "org.apache.commons.dbcp.BasicDataSource",

events : {

depose : 'close'

},

fields : {

driverClassName : 'org.postgresql.Driver',

url : 'jdbc:postgresql://localhost:5432/mydatabase',

username : 'demo',

password : '123456'

}

}

}

dbcp: 通过 Nutz.Ioc 的 XML 配置文件

<ioc xsi:noNamespaceSchemaLocation="nutz-ioc-0.1.xsd">

<obj name="dataSource" type="org.apache.commons.dbcp.BasicDataSource">

<events>

<depose>close</depose>

</events>

<field name="driverClassName"><str>org.postgresql.Driver</str></field>

<field name="url"><str>jdbc:postgresql://localhost:5432/mydatabase</str></field>

<field name="username"><str>demo</str></field>

<field name="password"><str>123456</str></field>

</obj>

</ioc>

-在WEB.config配置下面的节点,connectionstring写的是连接数据库的字符串datasource是坦谨填写的数据库,initialcatalog是连接的数据库名称,user id是连接数据的账户名,password是账户的密码核者

<connectionStrings>

<add name="connstring" connectionString="Data Source=.\HHInitial Catalog=stuUser ID=saPassword=123"/>

</connectionStrings>

--在web应用层获取让氏基这段数据库连接字符串的语句是

ConfigurationManager.ConnectionStrings["connstring"].ToString()


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12479700.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存