使用 JDBC 实现迭代器设计模式

2024-03-18

我正在解决以下问题:

迭代器设计模式是一种封装性很强的设计模式。举个例子;图书馆需要一个图书管理系统。一堂课为books 存储他们的详细信息和一个类library存储书籍和书架编号。假设图书馆希望使用以下方式将数据存储在数据库中JDBC.

如何使用 JDBC 实现迭代器设计模式以确保数据的封装?

我关心的是数据库的处理位置以及数据如何在应用程序之间共享。

数据库处理程序可以是库类的内部类吗?那么是否可以保存数据并根据请求检索数据而不影响封装?

我还在学习,还有很长的路要走,所以要温柔:)


这是关于使用迭代器模式访问数据库的近似。

package tk.ezequielantunez.stackoverflow.examples;

import java.util.Collection;
import java.util.Iterator;

/**
 * Paged implementatios of a DAO. Iterator interface is used.
 * Nottice you get pages of Collections, where resides your data.
 * @author Ezequiel
 */
public class DAOIterator implements Iterator<Collection> {

    int actualPage;
    int pageSize;

    public DAOIterator(int pageSize) {
        this.actualPage = 0;
        this.pageSize = pageSize;
    }

    /**
     * Indicates if you have more pages of datga.
     */
    @Override
    public boolean hasNext() {
        return actualPage < getTotalPages();
    }

    /**
     * Gets the next page of data.
     */
    @Override
    public Collection next() {
        return getPage(++actualPage);
    }

    @Override
    public void remove() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    /**
     * Calculates total number of pages.
     */
    private int getTotalPages() {
        /* You could do a count of total results and divide them by pageSize */
        throw new UnsupportedOperationException("Not supported yet.");
    }

    /**
     * Get a page of results with X objects, where X is the pageSize used in
     * constructor.
     */
    private Collection getPage(int page) {
        /* Get data from database here */
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JDBC 实现迭代器设计模式 的相关文章

  • 如何杀死Mysql“show processlist”中的所有进程?

    因为我在那里看到了很多进程 并且 时间 列显示了所有进程的大值 大规模屠杀操作节省时间 在 MySql 本身中执行此操作 运行这些命令 mysql gt select concat KILL id from information sche
  • “在 arraylist 构造函数中找不到 add(java.lang.String) 合适的方法”?

    import java util ArrayList import java util Random public class College instance variables replace the example below wit
  • iText7:如何获取段落的实际宽度

    在添加到文档之前 我需要知道段落的宽度 以磅为单位 我在这里搜索并找到了 Alexey 关于段落高度的答案 所以我用宽度做了它 但它不起作用 无论段落有多长 始终返回矩形的宽度 我尝试了这段代码 private float getRealP
  • Encog - 如何加载神经网络的训练数据

    The NeuralDataSet我在实际中看到的对象除了 XOR 之外什么都没有 它只是两个小数据数组 我无法从文档中找出任何内容MLDataSet 似乎所有内容都必须立即加载 但是 我想循环遍历训练数据 直到到达 EOF 然后将其算作
  • Spring的@PreDestroy导致随机记录而不记录

    我正在使用 Spring 并且在终止时我让 PreDestroy 清理 bean 我不明白为什么日志记录有时会成功 而有时会失败 Using Log4j2 Logger log LogManager getLogger MyClass cl
  • kafka消费端Offsets的一致性

    我有复制因子为 3 的卡夫卡主题min insync replicas 2 一个向该主题发送 X 条消息的生产者acks all 一段时间后 1 分钟内 在所有消息发送到主题后 将使用 java kafka 客户端为此主题创建新的消费者 使
  • 何时使用 clone() 以及 addAll() 和 add() 的实际工作原理

    我正在使用 Java 和 MySQL 我的项目中有大约 60 个交易屏幕 我曾经用过add and addAll 复制的功能ArrayList 例如 List
  • 改造添加带有令牌和 ID 的标头

    我在获取经过身份验证的用户时遇到问题 在此之前我得到了令牌和用户 ID 现在我需要使用访问令牌和 ID 从服务器获取用户 我有标题格式 https i stack imgur com OQ87Y png 现在我尝试使用拦截器添加带有用户令牌
  • 如何自定义 JFrame 上的标题栏?

    我想在我的 Java Swing 桌面应用程序中拥有一个自定义的标题栏 最好的方法是什么 我可以通过在 JFrame 的构造函数中使用以下代码来使用 Swing 标题栏 this setUndecorated true this getRo
  • 如何在打开导航抽屉时使背景 Activity 变小?

    我想做我的背景Activity打开时稍微小一点Navigation Drawer 模拟存在的效果Airbnb应用 我想最好的解释是截图 但重点不是让 View 变小 而是让它成为与 Drawer 打开 关闭动画同步的动画 因此 如果您开始打
  • 将 try catch finally 块放入另一个 finally 块中

    try catch finally try catch finally 上面的代码好不好 是的 你可以这样做 实际上 在处理想要正确关闭的流时 您甚至需要这样做 InputStream in try catch finally try in
  • Android:如何停止监听电话监听器? [复制]

    这个问题在这里已经有答案了 可能的重复 Android 为什么 PhoneCallListener 在活动完成后仍然存在 https stackoverflow com questions 11666853 android why phon
  • 用于验证 InetSocketAddresses 的正则表达式(ipv4/v6 + 端口地址)

    我在寻找testedipv4 和 ipv6 的正则表达式InetSocket地址 http download oracle com javase 6 docs api java net InetSocketAddress html toSt
  • Guava MultiSet 与 Map?

    我对Multiset的理解是一个带有频率的集合 但是我总是可以使用Map来表示频率 还有其他原因使用Multiset吗 优点Multiset
  • 如何将模型从 ML Pipeline 保存到 S3 或 HDFS?

    我正在尝试保存 ML Pipeline 生成的数千个模型 正如答案中所示here https stackoverflow com questions 32121046 run 3000 random forest models by gro
  • 列表到优先队列

    我有一个 C 大学编程项目 分为两个部分 在开始第二部分时应该使用priority queues hash tables and BST s 我 至少 在优先级队列方面遇到了麻烦 因为它迫使我自己重做第一部分中已经实现的许多代码 该项目是关
  • SWIG C 函数指针和 JAVA

    我有一些 C 代码 其中一个方法有一个函数指针作为参数 我正在尝试在我的 Android 应用程序中使用 C 代码 我决定使用 SWIG 来完成生成我需要的 java 文件的所有工作 一切都适用于常规函数 没有函数指针作为参数的函数 但我不
  • java.lang.OutOfMemoryError:尝试将 Java 对象转换为 Json 字符串时的 Java 堆空间

    我尝试将 csv 文件转换为 200K 对象的 Json 文件 其中对象代表 csv 中的 1 行 我在 32 位上安装了 Java 并且项目配置 VM 参数 Xmx1024m 但是我得到 Exception in thread main
  • 产品和变体 - 设计数据库的最佳方法

    描述 商店可以有产品 鞋子 T 恤等 每个产品可以有许多变体 每个变体可以有不同的价格和库存 例如T 恤有不同的颜色和尺寸 颜色 蓝色 尺寸 L 价格 10 美元 库存 5 颜色 蓝色 尺寸 XL 价格 10 美元 库存 10 颜色 白色
  • 可以使用两个独立的 SQLite 数据库吗?

    我有一个 sqlite 数据库 其中存储用户定义的信息和用户只读的信息 我觉得将来可能需要修改只读信息 并且我不想进行整个数据迁移 有没有一种方法可以使用单独的 sqlite 数据库来存储只读信息 该数据库可以轻松替换 如果是这样 您能否就

随机推荐

  • MYSQL:如何创建一个触发器来根据不同表中的值计算字段值?

    In table A我有田地CENA 价格 cena za kus 每件价格 mnozstvi 数量 In table B我有田地DPH vat 我想添加一个更新 插入之前触发器 它将计算PRICE字段 像这样 price price pe
  • 如何从 HSSFWorkbook 对象获取输入流

    我希望我的 Web 应用程序用户将一些数据下载为 Excel 文件 我有下一个函数在响应对象中发送输入流 public static void sendFile InputStream is HttpServletResponse resp
  • 如何在 jQuery/Javascript 中编写 switch 语句来测试元素是否具有特定类?

    这是我正在使用的 if else 语句的结构 myclass a click function if this hasClass class1 do something else if this hasClass class2 do som
  • ASP.NET MVC 模型绑定器。使用对象数组参数调用控制器

    我想要 MVC 控制器的以下签名 public ActionResult Create Persons p 有可能有这样的东西吗 编辑 假设我想通过提交由特殊符号分隔的名称列表来获取人员对象数组 例如我提交一个表格
  • 使用 C# 从字符串路径构建文件夹/文件树[重复]

    这个问题在这里已经有答案了 我需要解决一个涉及从字符串路径构建树的问题 以下是模型 public class Folder public string Name get set public List
  • Hibernate 4.0.1 至 4.3.5:无法建立 JDBC 连接

    我有一个使用 Hibernate 4 0 1 与 derby 数据库交互的项目 效果很好 这是一个示例程序 它仅连接到数据库并且不执行任何操作 import org hibernate Session import org hibernat
  • 委托给私有部分

    有时 C 的隐私概念让我感到困惑 class Foo struct Bar Bar p public Bar operator gt const return p struct Foo Bar void baz std cout lt lt
  • 是否可以用 angular2 注入接口?

    我想知道 Angular2 中是否有正确的方法来注入接口 参见下文 我认为这与界面上缺少 Injectable 装饰器有关 但似乎这是不允许的 Regards 当 CoursesServiceInterface 作为接口实现时 TypeSc
  • 如何避免控制台窗口包含包含 os.system 调用的 .pyw 文件?

    如果我将代码文件另存为 pyw 没有出现控制台窗口 这就是我想要的 但如果代码包含对os system 我仍然看到一个讨厌的控制台窗口 我认为这是由调用引起的os system 有没有办法从我的内部执行其他文件 pyw脚本根本不升起控制台窗
  • scala 日志记录函数名称

    在我的日志条目中 我想记录调用 log 方法的函数名称 这是为了能够自动按函数名称过滤日志条目 这可能吗 有任何图书馆吗 对现有库有任何扩展吗 换句话说 是否可以在运行时提取执行上下文当前正在执行的scala函数的名称 第二个问题 我知道这
  • CImg 库在旋转时创建扭曲的图像

    我想使用 CImg 库 http cimg sourceforge net http cimg sourceforge net 以任意角度旋转图像 图像由 Qt 读取 不应执行旋转 QImage img sample with alpha
  • Unix 查找:多种文件类型

    我想对多种文件类型运行 find name 例如 find name h cpp 这可能吗 find name h o name cpp 要在以下位置找到此信息man页面 类型man find并通过键入搜索运算符 OPERATORS并按回车
  • Apache James Spring 发行版未启动

    尝试一下阿帕奇 詹姆斯 https james apache org 目前的邮件服务器 我下载后当前二进制发行版 3 4 0 https www apache org dyn closer lua james server 3 4 0 ja
  • ANTLR @header、@parser、superClass 选项和基本文件 io (Java)

    我想将解析器操作与基本文件 io Java 一起使用 例如 G ANTLR 语法中的 PrintWriter 我必须使用 superClass 选项还是可以使用 header 在这两种情况下 我如何声明 PrintWriter 对象以及如何
  • Scala 中的类型 - 下界

    在下面的代码上 我的期望是T必须是 a 类型B or A 所以请致电lowerBound new D 可能不应该编译 类似的上限实验给了我预期的类型检查错误 感谢您提供提示 object varianceCheck class A over
  • 修复了 Octave urlread 导致无法使用给定 CA 证书对对等证书进行身份验证的问题

    Question 如何修复 不是解决方法 Octave 假设 libcurl 与 Octave 捆绑 urlread 导致无法使用给定的 CA 证书对对等证书进行身份验证 读过pkg 在 Windows 中从 forge 安装 http o
  • 通过命令行连接到 smtp.gmail.com

    我正在编写一个通过有效的 GMail 用户 ID 和密码发送邮件的应用程序 我只是想在 Windows XP 命令行上模拟 SMTP 连接 当我远程登录时smtp gmail com在 465 端口 我没有看到任何东西 带标题的空白命令窗口
  • PHPWord 导出给出损坏的 Word 文件

    我使用了 PHPWord 网站上的示例代码 http phpword codeplex com documentation http phpword codeplex com documentation当我尝试使用 Word 打开它时 出现
  • Laravel Production 问题 - 使用 Laravel 4.1.x 更新作曲家

    到目前为止 我在部署 Laravel 项目时还没有遇到任何问题 我已经为这个项目部署了将近一年 但出现了一些新的错误 首先 我无法运行作曲家更新 因为它显示此错误 composer update Warning This developme
  • 使用 JDBC 实现迭代器设计模式

    我正在解决以下问题 迭代器设计模式是一种封装性很强的设计模式 举个例子 图书馆需要一个图书管理系统 一堂课为books 存储他们的详细信息和一个类library存储书籍和书架编号 假设图书馆希望使用以下方式将数据存储在数据库中JDBC 如何