我已经创建了一个桌面应用程序,并通过数据库连接(bean/类)将其连接到MySQL数据库,可以进行CRUD。我在NetBeans网站上看到,他们在web应用程序上创建了一个连接池。
连接池是否与桌面应用程序上的类/bean相同?
这是不是意味着我要创建一个类似于桌面应用程序的bean/类来连接到DB模型(MVC),或者我必须做一些其他的事情?
在Glassfish服务器上,您可以使用向导来创建连接池;而在Apache上,您不需要这样做。我必须为Apache创建DB连接bean吗?
实践是什么(bean,其他什么?)将数据库连接到web应用程序?
我也读过关于Hibernate的文章,但我不理解它的用法。hibernate在哪里能帮上忙?我的意思是,它是ORM,但是Hibernate能为我做些什么,让我的代码更容易呢?我想我错过了ORM的要点
发布于 2011-03-01 16:34:33
Hibernate将帮助您进行事务管理。它将使您能够打开几个不同的数据库连接,并在您使用不可用的对象(如从不同线程拉入的bean)时给出警告。
当您查询DB时,Hibernate的ORM将使您的代码变得更容易。您可以使用Criteria-queries,而不是将标准SQL查询编写为字符串。
发布于 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 (?, ?),而不是说
class Pojo { long id; String value; }
Pojo demo = new Pojo();
demo.value = "Test";
session.persist(demo);Hibernate将为您创建SQL并将其发送到DB。在这个阶段,它并不能让你的生活变得更轻松。当你改变你的Pojos时,Hibernate开始闪耀光芒:
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命令。
https://stackoverflow.com/questions/5151882
复制相似问题