내가 online material에서 발견 조각은() "jooq은 여기서 끝"에서 전환이 jooq 및 자바 8 개 스트림 SQL 생성 아래 jooq에서
이 SQL 쿼리 생성을 가져 오기까지 발생 뜻 "스트림의 시작"에있다 ? 나중에 스트림()이 시작되면 모든 것이 Java 프로세스 내부의 메모리에 있습니다.활성 레코드 DSL과 같은 Java 8 스트림이고 전체 스 니펫은 stream() 부분을 포함하여 SQL 쿼리로 변환됩니까? 내가 sortBy/groupingBy 안에 완료 그들은이 SQL 쿼리 생성이까지 발생 뜻뿐만 아니라
DSL.using(c)
.select(
COLUMNS.TABLE_NAME,
COLUMNS.COLUMN_NAME,
COLUMNS.TYPE_NAME
)
.from(COLUMNS)
.orderBy(
COLUMNS.TABLE_CATALOG,
COLUMNS.TABLE_SCHEMA,
COLUMNS.TABLE_NAME,
COLUMNS.ORDINAL_POSITION
)
.fetch() // jOOQ ends here
.stream() // Streams start here
.collect(groupingBy(
r -> r.getValue(COLUMNS.TABLE_NAME),
LinkedHashMap::new,
mapping(
r -> new Column(
r.getValue(COLUMNS.COLUMN_NAME),
r.getValue(COLUMNS.TYPE_NAME)
),
toList()
)
))
.forEach(
(table, columns) -> {
// Just emit a CREATE TABLE statement
System.out.println(
"CREATE TABLE " + table + " (");
// Map each "Column" type into a String
// containing the column specification,
// and join them using comma and
// newline. Done!
System.out.println(
columns.stream()
.map(col -> " " + col.name +
" " + col.type)
.collect(Collectors.joining(",\n"))
);
System.out.println(");");
}
);