首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个简单的嵌入式数据库中,要保持什么生存和重新创建什么?

在一个简单的嵌入式数据库中,要保持什么生存和重新创建什么?
EN

Stack Overflow用户
提问于 2010-03-10 12:10:38
回答 2查看 316关注 0票数 1

在带有嵌入式Derby数据库的桌面应用程序中,在整个应用程序的整个生命周期中,我应该保持什么存活(而不是每次与数据库交谈时重新创建)?

  1. ConnectionStatement,在程序的整个生命周期中使用相同的语句?
  2. Connection,重新创建语句吗?
  3. 这两个都没有。也就是说,重复重新创建连接和语句?

从数据库业馀者的观点来看,避免重新创建任何不需要重新创建的东西似乎是合理的,但是选项1(或2)是违反标准实践的,还是有一些明显的缺点?创建连接和语句是否昂贵?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-10 15:27:12

嵌入式 Derby应用程序中,连接和语句对象都相当便宜,我认为您不应该担心在需要时创建它们。在Derby单元测试套件中,我们创建了数以万计的连接和几十万条语句,没有问题。

只要您愿意,也可以将连接和语句对象保持在周围。嵌入式Derby没有时间限制,并且不会删除连接或语句对象,除非您告诉它(通过关闭它们),或者除非您泄漏它们,在这种情况下,垃圾收集器将清除它们(最终)。

尽管保持连接很好,但是当事务完成时(当然,除非您在自动提交模式下运行),您应该提交()事务。

而且,如果您在周围保留一个结果集,请注意提交事务通常也会关闭结果集,而不是专门构造在commit之间保持打开的特殊结果集。

票数 1
EN

Stack Overflow用户

发布于 2010-03-10 12:20:16

连接确实很昂贵(可能需要几百毫秒)。但是,连接的生存期有限,语句和结果集取决于其生存期。当连接被释放超过30分钟时,平均DB就会超时并退出连接。您可以在代码中添加一些超时检查器,以便“自动”重新获取连接,但这是一项繁琐的工作,如果您不知道它应该如何在引擎盖下工作,则很容易出现错误。而是使用现有的、完全开发的和健壮的连接池(如C3P0 ),并编写JDBC代码通常方式 (获取,在尽可能短的范围内关闭所有资源)。应该是这样的。

虽然在理论上(显然也是在实践中),嵌入式数据库连接的成本会更低,而且连接可以永远存在,但我强烈反对在JDBC代码中以不同的方式处理嵌入式数据库。这将使您的JDBC代码在语义上有缺陷,并且完全不可移植。无论何时,只要您想要将其分发和/或更改为真正的具有更多功能的RDBMS服务器,您就必须重写/重新实现它。

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

https://stackoverflow.com/questions/2416692

复制
相关文章

相似问题

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