首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库连接池和数据库连接?

数据库连接池和数据库连接?
EN

Stack Overflow用户
提问于 2011-03-01 16:10:37
回答 2查看 1.4K关注 0票数 0

我已经创建了一个桌面应用程序,并通过数据库连接(bean/类)将其连接到MySQL数据库,可以进行CRUD。我在NetBeans网站上看到,他们在web应用程序上创建了一个连接池。

连接池是否与桌面应用程序上的类/bean相同?

这是不是意味着我要创建一个类似于桌面应用程序的bean/类来连接到DB模型(MVC),或者我必须做一些其他的事情?

在Glassfish服务器上,您可以使用向导来创建连接池;而在Apache上,您不需要这样做。我必须为Apache创建DB连接bean吗?

实践是什么(bean,其他什么?)将数据库连接到web应用程序?

我也读过关于Hibernate的文章,但我不理解它的用法。hibernate在哪里能帮上忙?我的意思是,它是ORM,但是Hibernate能为我做些什么,让我的代码更容易呢?我想我错过了ORM的要点

EN

回答 2

Stack Overflow用户

发布于 2011-03-01 16:34:33

Hibernate将帮助您进行事务管理。它将使您能够打开几个不同的数据库连接,并在您使用不可用的对象(如从不同线程拉入的bean)时给出警告。

当您查询DB时,Hibernate的ORM将使您的代码变得更容易。您可以使用Criteria-queries,而不是将标准SQL查询编写为字符串。

票数 0
EN

Stack Overflow用户

发布于 2011-03-01 16:34:56

在Java中,DB连接始终使用JDBC驱动程序。据我所知,没有数据库允许同时在单个连接上运行多个SQL命令,因此,如果您的应用程序可以同时运行多个SQL命令,则每个连接都会成为瓶颈( web服务器的常见情况是,成百上千的用户可以同时与数据库进行交互)。

UPDATE:我的意思是:您可以通过单个连接(如UPDATE ... ; COMMIT)轻松地以菊花链形式发送命令,但不能同时发送两个UPDATE命令--在发送下一个命令之前,您总是必须等待第一个命令完成。一些数据库允许在一个查询中发送多个命令,但是它们是一个接一个地执行,而不是同时执行和。想想看:如果您可以在单个连接上同时运行多个命令,您如何知道它们的执行顺序?

最重要的是,对于大多数数据库来说,创建数据库连接的代价很高。因此,它们是在应用程序启动时预先创建的,并保存在一个池中。一旦您使用池化JDBC驱动程序“连接”到数据库,它就会从池中挑选一个未使用的连接并将其返回。这(几乎)不需要时间。当您“关闭”连接时,它会返回到池中。

作为额外的好处,池可以使连接保持活动状态。因此,当您需要一个新的连接时,您永远不需要担心连接错误(好吧,只要数据库正在运行)。

从应用程序端来说,这要么是透明的(目前大多数JDBC驱动程序要么在内部池化,要么拥有池化API)。如果您的JDBC驱动程序不支持,则可以始终使用DBCP之类的池。池处理所有令人讨厌的细节,您可以根据池API编写应用程序,而不是直接使用JDBC。文档会告诉你怎么做。

Hibernate是一种不同的野兽。Hibernate是JDBC之上的一层,可以将POJO转换为SQL,然后再转换回来。

所以你可以说INSERT INTO data(ID, VALUE) values (?, ?),而不是说

代码语言:javascript
复制
class Pojo { long id; String value; }
Pojo demo = new Pojo();
demo.value = "Test";

session.persist(demo);

Hibernate将为您创建SQL并将其发送到DB。在这个阶段,它并不能让你的生活变得更轻松。当你改变你的Pojos时,Hibernate开始闪耀光芒:

代码语言:javascript
复制
class Pojo { long id; String value; 
    String name; // Oops ... forget the name
}
Pojo demo = new Pojo();
demo.name = "John";
demo.value = "Test";

session.persist(demo);

Hibernate将相应地更改DB定义,并更新加载和保存对象所需的所有SQL命令。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5151882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档