Scala: Expondo um ResultSet JDBC através de um gerador (iterável)
Eu tenho um conjunto de linhas em um banco de dados e gostaria de fornecer uma interface para alternar entre elas assim:
def findAll: Iterable[MyObject]
Onde não precisamos ter todas as instâncias na memória de uma só vez. No C #, você pode criar facilmente geradores como esse usando yield, o compilador cuida da conversão do código que percorre o conjunto de registros em um iterador (meio que invertendo-o).
Meu código atual é assim:
def findAll: List[MyObject] = {
val rs = getRs
val values = new ListBuffer[MyObject]
while ( rs.next() )
values += new valueFromResultSet(rs)
values.toList
}
Existe uma maneira de converter isso para não armazenar o conjunto inteiro na memória? Talvez eu pudesse usar um para compreensão?