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-查看连接池。