Speedment
Speedment 是一个基于 Java8 Stream 的 ORM 工具包和运行时环境。
作为一个 ORM 框架,Speedment 可以从传统关系型数据库中分析数据,同时,在它提供的运行时环境下,也可以开发基于 Java 的数据库应用。你只需要用标准的 Java8 Stream,不用写任何sql,类sql。
示例
查找一个超过120分钟的电影:
// Searches are optimized in the background!
Optional<Film> longFilm = films.stream()
.filter(Film.LENGTH.greaterThan(120))
.findAny();
结果为下列sql:
SELECT
`film_id`,`title`,`description`,`release_year`
FROM
FROM `sakila`.`film
WHERE
(`length` > 120)
不需要写任何sql,一个完美的纯Java世界!
Stream 与 SQL
After all, we all love Java and why should we need to know SQL
我如此喜欢Java,为什么还要学SQL?
Stream 与 SQL 有相似的语义,见下表:
SQL | Java8 Stream |
---|---|
FROM | stream() |
SELECT | map() |
WHERE | filter() (before collecting) |
HAVING | filter() (after collecting) |
JOIN | flatMap() |
DISTINCT | distinct() |
UNION | concat(s0, s1).distinct() |
ORDER BY | sorted() |
OFFSET | skip() |
LIMIT | limit() |
GROUP BY | collect(groupingBy()) |
COUNT | count() |