当前位置: 首页 > 面试题库 >

简单的jdbc包装器

晏炳
2023-03-14
问题内容

为了在我们的应用程序中实现数据访问代码,我们需要一些框架来包装jdbc(由于可伸缩性,所以我们不选择ORM)。

我曾经使用过的最酷的框架是Spring-
Jdbc
。但是,我公司的政策是避免外部依赖,尤其是spring,J2EE等。因此,我们正在考虑编写自己的手工jdbc框架,其功能类似于Spring-
jdbc:行映射,错误处理,支持Java5的功能,但没有交易支持。

有没有人有编写这样的jdbc包装器框架的经验?如果有人有使用其他jdbc包装器框架的经验,请分享您的经验。

提前致谢。


问题答案:

我们编写了自己的包装器。这个主题值得写一篇论文,但是我怀疑我是否有时间写它,所以这里有一些关键点:

  • 我们接受了sql,并没有尝试将其隐藏。唯一的调整是添加对命名参数的支持。参数很重要,因为我们不鼓励使用实时s​​ql(出于安全原因),并且我们始终使用PreparedStatements。

  • 对于连接管理,我们使用了Apache DBCP。当时这很方便,但目前尚不清楚现代JDBC实现需要多少资源(缺少有关此文档的文档)。DBCP还池了PreparedStatement。

  • 我们没有理会行映射。取而代之的是(用于查询),我们使用了类似于Apache dbutil的ResultSetHandler的方法,该方法使您可以将结果集“馈入”到一个方法中,该方法然后可以将信息转储到您想要的任何位置。这更加灵活,实际上,为行映射实现ResultSetHandler并不困难。对于插入/更新,我们创建了一个通用的记录类(基本上是一个带有一些额外花哨的hashmap)。行映射(对我们而言)最大的问题是,您在执行“有趣的”查询时就被卡住了,因为您可能有映射到不同类的字段;因为您可能具有分层的类结构,但结果集比较平坦;或者因为映射是复杂的并且依赖于数据。

  • 我们内置了错误日志记录。对于异常处理:在查询中,我们捕获并记录,但在更新中,我们捕获,记录并重新抛出未经检查的异常。

  • 我们使用包装器方法提供了交易支持。调用者提供执行事务的代码,并且我们确保正确管理事务,不会忘记完成事务,并且内置回滚和错误处理功能。

  • 稍后,我们添加了一个非常简单的关系方案,该方案允许将单个更新/插入应用于记录及其所有依赖项。为了简单起见,我们没有在查询中使用它,并且我们特别决定不支持使用deletes,因为使用级联删除更可靠。

迄今为止,该包装器已在两个项目中成功使用。当然,它是轻量级的,但是如今,每个人都说他们的代码是轻量级的。更重要的是,它提高了程序员的生产率,减少了错误的数量(并使问题更易于查找),并且在需要时相对容易地进行了跟踪,因为我们不相信仅仅为了提供漂亮的体系结构而增加很多层。



 类似资料:
  • 本文向大家介绍java的jdbc简单封装方法,包括了java的jdbc简单封装方法的使用技巧和注意事项,需要的朋友参考一下 学习了jdbc一段时间后感觉自己写一个简单的封装来试试,于是参考的一些资料就写了一下不是多好,毕竟刚学也不太久 首先写配置文件:直接在src下建立一个db.properties文件然后写上内容 之后再写一个类代码如下 之后写主类代码如下 下面是两张图是建立db.propert

  • 问题内容: 我有许多C函数,我想从python调用它们。cython似乎是要走的路,但我无法真正找到实现此目的的示例。我的C函数如下所示: 我要做的就是指定前三个参数(一个字符串和两个整数),并恢复8个numpy数组(或python列表。所有双精度数组都有N个元素)。我的代码假定指针指向已分配的内存块。同样,产生的C代码应该链接到一些外部库。 问题答案: 这是一个从逻辑上将numpy数组传递给外部

  • 主要内容:创建JDBC应用程序,示例代码本文章教程中将演示如何创建一个简单的JDBC应用程序的示例。 这将显示如何打开数据库连接,执行SQL查询并显示结果。 这个示例代码中涉及所有步骤,一些步骤将在本教程的后续章节中进行说明。 创建JDBC应用程序 构建JDBC应用程序涉及以下六个步骤 - 导入包:需要包含包含数据库编程所需的JDBC类的包。 大多数情况下,使用就足够了。 注册JDBC驱动程序:需要初始化驱动程序,以便可以打开与数据库的

  • 本文向大家介绍简单了解如何封装自己的Python包,包括了简单了解如何封装自己的Python包的使用技巧和注意事项,需要的朋友参考一下 将自己的程序打包为whl/tar.gz文件 有时候自己写了一个开发基本类,我们把这个类打包为whl或者tar.gz文件,这样的话同事也可以使用自己开发的基本类了 安装setuptools pip install setuptools 编写setup.py及__in

  • 我一直试图使用JDBC在JAVA中创建一个简单的数据库应用程序。到目前为止,我所有的尝试都没有成功,甚至在加载驱动程序。了解我是Java新手,刚刚开始学习。以下是我的步骤: 程序总是给出这个例外: 线程“main”Java.lang.ClassNotFoundException:com.microsoft.sqlServer.jdbc.sqlServerDriver在Java.net.URLCla

  • 问题内容: 我有一段代码需要在方法中传递字段的类。由于代码的机制,我只能处理引用对象,而不能处理基元。我想要一种简单的方法来确定一个类型是否为原始类型,并将其与适当的包装器类交换。所以到目前为止,我在代码中所做的是这样的: 除我需要显式检查所有原始类型并将其与适当的包装器类交换外,该方法工作正常。现在我知道没有那么多原始类型,简单地将它们全部列出就不会有问题,但是我想知道是否有一种更简单,更优雅的