涉及到DataSource时,到底是个什么原理啊?

ruoye_2008 2008-10-29 10:26:34
平时做一些小东西时都只用那种最常用的最简单的连接。

但也听说过一些关于连接池的,在以前老师讲课中及平时自己看书中,都只知道通过改Tomcat下的server.xml文件,加入几大排代码就可实现连接数据,自己试了也确实可以。但这种如果换一台机子测试,又要修改servler.xml文件,极为麻烦,所以这方面自己一直没有花时间去研究。

后来老师带我们做一个项目时,我看了没有改server.xml文件,好像是在项目里加了不知是一个类还是几个类,也可实现数据库连接。因为不懂其中的原理,看得朦朦胧胧,又由于时间匆忙,当时没有细问,之后也忘了,所以一直拖下来了。

现在翻看以前的例子,好像是通过DataSource来连接数据库的,网上查了相关的,还不是很清楚,请大家帮忙解说一下,如有代码也请贴出来(注:不要那种改server.xml的,而且不要附在三大框架中,最好是只用servlet做的项目中也可调用从而连接数据库),不甚感激!!!

...全文
263 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruoye_2008 2008-11-01
  • 打赏
  • 举报
回复
以前对连接池没多大印象,经过今天一个晚上查资料,终于有了大概的了解。

一楼说得还是太简单了,让对这方面没什么了解的人有点丈二和尚摸不着头脑的感觉。
我开始看时怎么这似乎就是我们平时一般测试用的常用连接嘛,怎么是连接池方面的呢?难道在程序里加入这几行代码就行了吗?现在终于知道了还要导包,导什么包,到哪里下载包,还有配置其它的一些参数……
ruoye_2008 2008-10-31
  • 打赏
  • 举报
回复
有点明白了,先去网上查查相关的连接池资料再说,

另外问一下,用Tomcat服务器,一般用什么连接池啊?
直接改server.xml的,这又是什么连接技术?
请帮忙推荐一种用Tomcat服务器而又不需要改server.xml的,只需导入JAR包,再调用就可以的连接池!
sunyujia 2008-10-31
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ruoye_2008 的回复:]
有点明白了,先去网上查查相关的连接池资料再说,

另外问一下,用Tomcat服务器,一般用什么连接池啊?
直接改server.xml的,这又是什么连接技术?
请帮忙推荐一种用Tomcat服务器而又不需要改server.xml的,只需导入JAR包,再调用就可以的连接池!
[/Quote]
另外问一下,用Tomcat服务器,一般用什么连接池啊?
DBCP 都是apache组织的项目
直接改server.xml的,这又是什么连接技术?
同上
请帮忙推荐一种用Tomcat服务器而又不需要改server.xml的,只需导入JAR包,再调用就可以的连接池!
我在1楼写了使用的也是DBCP
chenyi84 2008-10-30
  • 打赏
  • 举报
回复
连接池~
jeff2033333 2008-10-30
  • 打赏
  • 举报
回复
帮你不到了,我用的是glassfish
wonflay 2008-10-30
  • 打赏
  • 举报
回复
见原理我就晕!
victorxiang 2008-10-30
  • 打赏
  • 举报
回复
呵呵,连接池这些东西!
主流就那么几个,根据自己的实际情况选择吧!
FL1429 2008-10-30
  • 打赏
  • 举报
回复
其实就是通过数据源连接数据库....

都是要配置的
sunyujia 2008-10-30
  • 打赏
  • 举报
回复
哪不懂啊.说出来啊,你光说不懂有啥用啊

说出你的想法
ruoye_2008 2008-10-30
  • 打赏
  • 举报
回复
还是不懂???
ruoye_2008 2008-10-30
  • 打赏
  • 举报
回复
怎么配置啊,那几个类是怎么写的啊?
你们平时用连接池难道都是直接改server.xml文件的吗?
tiyuzhongxin789 2008-10-30
  • 打赏
  • 举报
回复
好像用DBCP和C3P0的多一点,tomcat中默认配置是dbcp连接池,不过由于dbcp的bug比较多,很多人又为tomcat配置了C3P0连接池。

不过对于weblogic和websphere最好是用其自带的连接池。
Jarvis-Li 2008-10-30
  • 打赏
  • 举报
回复
你就记住用它你可以连接到数据库
huoyin 2008-10-29
  • 打赏
  • 举报
回复
好像用DBCP和C3P0的多一点,tomcat中默认配置是dbcp连接池,不过由于dbcp的bug比较多,很多人又为tomcat配置了C3P0连接池。

不过对于weblogic和websphere最好是用其自带的连接池。
Landor2004 2008-10-29
  • 打赏
  • 举报
回复
连接池有很多种:再tomcat中配置的那个是dbcp连接池
还有c3p0连接池,proxool连接池,等等

当程序与数据库交互的时候,要创建数据库的连接;创建数据库的连接比较消耗系统资源;
所以连接池就出现了,主要是程序去连接池里面获取连接;而这些连接一直与数据库保持连接

程序用完了,把连接归还给连接池,其他的程序要用了,就再到连接池里去取,
这样就避免了程序每次都访问数据库创建连接的麻烦
heavenforgold 2008-10-29
  • 打赏
  • 举报
回复
现在有很多开源的java数据库链接池的项目。
象Jakarta DBCP , C3P0 ,DBPool 等。引入对应的jar包后,在代码直接引用。sunyujia的代码已经演示了如何引用数据库连接池。

“通过DataSource来连接数据库”,这种说法我觉得不是很合适。 DataSource是描述数据源的接口,封装了Connection对象,以及与数据连接相关的信息。真正连接数据库还是Connection对象,只不过Connection对象封装为DataSource的一个属性。


对于数据库连接池,其实就是一个对象池,只不过多了处理conn对象的调度算法。说白了就是对象缓存池。
sunyujia 2008-10-29
  • 打赏
  • 举报
回复
原理还说吗,简单的说下
一个大容器里面放一些conn对象,有个线程不断的检查失效(失效的含义是很广的)的conn,并从容器中移出
close的时候并不是真的close,这里靠动态代理实现

专业的说法见书吧,来自不就是寻找不专业通俗的说法吗

spring就是靠反射实例化的对象而已,完全可以把spring的很多代码,直接改到java里面.
更多信息查考 apache官方网站的快速入门.
sunyujia 2008-10-29
  • 打赏
  • 举报
回复
Apache的,我现在改喜欢C3P0了
 BasicDataSource bds = new BasicDataSource();
bds.setUsername("sa");
bds.setPassword("");
bds
.setUrl("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs");
bds.setDriverClassName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = bds.getConnection();


http://topic.csdn.net/u/20080922/18/13f97fb2-7b11-4c47-80eb-ebf9e8d2f8f8.html

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧