spring - How to rewrite jdbcTemplate query using JDK8 features? -


here's code. let's there many large images in db want keep 1 in memory @ time. how write using jdk 8 features lambda , streams?

i started using kept failing ( https://spring.io/guides/gs/relational-data-access/ , www.jooq.org/java-8-and-sql) , using resultsetextractor working intendent, there way without resultsetextractor?

 jdbctemplate.query(              "select id,image,mimetype images",             new resultsetextractor(){                   @override                   public list extractdata(resultset rs) throws sqlexception, dataaccessexception {                           while(rs.next()){                              createthumbnail( new imageholder(rs.getint("id"), rs.getbytes("image"), rs.getstring("mimetype") ));                         }                           return null;                     }               }     );   

this nice looking stream/lambda version works holds many things in memory , gives oome sooner or later.

 jdbctemplate.query(               "select id,image,mimetype images",              (rs,rownum)->new imageholder(rs.getint("id"), rs.getbytes("image"),rs.getstring("mimetype"))     ).stream().foreach(                       imageholder -> createthumbnail(imageholder)     ) ); 

this loads rows before starts "streaming" them.

a solution move generation of thumbnail in first lambda, translating directly first example.

jdbctemplate.query(           "select id,image,mimetype images",          (rs,rownum)-> {              createthumbnail(new imageholder(                 rs.getint("id"),                 rs.getbytes("image"),                 rs.getstring("mimetype") ));          }) ) 

to have structure similar 1 tried achieve query method should return stream don't have collect before streaming.


Comments

Popular posts from this blog

Combining PHP Registration and Login into one class with multiple functions in one PHP file -

magento2 - Magento 2 admin grid add filter to collection -

Android volley - avoid multiple requests of the same kind to the server? -