Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JDBC实现迭代器设计模式_Java_Database_Design Patterns_Jdbc_Iterator - Fatal编程技术网

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

Java 使用JDBC实现迭代器设计模式,java,database,design-patterns,jdbc,iterator,Java,Database,Design Patterns,Jdbc,Iterator,我正在回答以下问题: 迭代器设计模式具有很强的封装性。例如,;图书馆需要一个图书管理系统。一个用于存储书籍详细信息的类,一个用于存储书籍和书架号的库的类。假设库希望使用JDBC将数据存储在数据库中 如何使用JDBC实现迭代器设计模式以确保数据的封装? 我关心的是在哪里处理数据库以及如何在应用程序中共享数据 数据库处理程序是否可以是库类的内部类?那么,在不影响封装的情况下,是否可以保存数据并根据请求检索数据 我仍在学习,还有很长的路要走,所以请温柔一点:)这是一篇关于根据数据库使用迭代器模式的概论

我正在回答以下问题:

迭代器设计模式具有很强的封装性。例如,;图书馆需要一个图书管理系统。一个用于存储书籍详细信息的
类,一个用于存储书籍和书架号的
库的类。假设库希望使用
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.");
    }
}
package tk.ezequielantunez.stackoverflow.examples;
导入java.util.Collection;
导入java.util.Iterator;
/**
*DAO的分页实现。使用迭代器接口。
*注意,您会得到一页页的集合,其中存放着您的数据。
*@作者Ezequiel
*/
公共类DAOIterator实现了迭代器{
int实际页面;
int页面大小;
公共迭代程序(int pageSize){
this.actualPage=0;
this.pageSize=页面大小;
}
/**
*指示是否有更多的datga页面。
*/
@凌驾
公共布尔hasNext(){
返回actualPage
迭代器用于遍历集合。这个问题是从哪里来的?@TonyHopkinson-实际上迭代器是用来遍历任何东西的,数据库查询结果与迭代器非常匹配。@Waddas-内部类实现了
Iterator
,外部类实现了
Iterable
,这是正确的。你认为在这种情况下,
某个东西
会是什么样子。@OldCurmudgeon我想(按照这个例子)
映射
,整数是UID。思维敏捷,把它作为一个内部阶级不是很低效吗?每次请求库的数据时,都需要关闭当前数据库并打开一个新数据库。@Waddas-No-查看连接池。