如何创建 DataSource
来源:网友推荐 更新:2025-05-15
如何创建DNS?
作为 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>
如电脑使用Win7系统,可按以下方法设置DNS:您右键点击电脑桌面的“网络”图标 ,选择“属性” >选择“控制面板” >在“网络和共享中心”中可看到当前的网络状况,点击左边的“更改适配器设置” >右键单击“本地连接”,选择“属性” >选择“internet协议版本4(TCP/IPv4)”,点击“属性” >选择“使用下列DNS服务器地址”,输入“首选”及“备用”DNS地址,最后点击“确认”即可。
温馨提示:每个地市的DNS地址参数不同,建议您可联系人工客服或前往营业厅进行咨询了解。
具体步骤如下:
1、运行VMware Workstation 10软件,单击“创建新的虚拟机”
2、在弹出的“新建虚拟机向导”中,选择“自定义”,单击“下一步”
3、硬件兼容性选择“Workstation 10.0”,选择“下一步”
4、选择“稍后安装操作系统”,“下一步”
5、客户机操作系统选择“linux”,然后选择相应的版本号
6、设置虚拟机名称和存放的位置
7、根据实际情况,设置处理器数量、核心数量
8、设置虚拟机的内存
9、创建网络类型
10、选择I/O控制器类型
11、选择磁盘类型
12、创建新虚拟磁盘
13、指定磁盘大小等
14、设置磁盘文件名称
15、虚拟机创建成功
作为 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>