• Stars
    star
    2,077
  • Rank 21,356 (Top 0.5 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Speedment is a Stream ORM Java Toolkit and Runtime

Spire the Hare

Java Stream ORM

Maven Central Javadocs Build Status Hex.pm Join the chat at https://gitter.im/speedment/speedment

Speedment is an open source Java Stream ORM toolkit and runtime. The toolkit analyzes the metadata of an existing SQL database and automatically creates a Java representation of the data model. This powerful ORM enables you to create scalable and efficient Java applications using standard Java streams with no need to type SQL or use any new API.

Speedment was originally developed by researchers and engineers based in Palo Alto with the purpose to simplify and streamline the development of Java database applications by leveraging the Java Stream API.

Speedment is licensed under the business-friendly Apache 2 license. Contribution from users is encouraged. Please feel free to request new features, suggest improvements and file bug reports. Read more about contributing here.

Spire the Hare

Quick Start

Assuming you have Maven installed and a relational database available, you can start using Speedment in a minute:

Expressing SQL as Java Streams

There is a remarkable resemblance between Java streams and SQL as summarized in the simplified table. This means there is no need for manually writing SQL-queries any more. You can remain in a pure Java world!

Streams to SQL

Example

Search in a film database for a film with a length greater than 120 minutes:

// Searches are optimized in the background!
Optional<Film> longFilm = films.stream()
    .filter(Film.LENGTH.greaterThan(120))
    .findAny();

Results in the following SQL query:

SELECT 
    `film_id`,`title`,`description`,`release_year`,
    `language_id`,`original_language_id`,`rental_duration`,`rental_rate`,
    `length`,`replacement_cost`,`rating`,`special_features`,
    `last_update` 
FROM 
     `sakila`.`film`
WHERE
    (`length` > 120)

Features

Speedment is equipped with the features listed below and more.

View Database Tables as Standard Java Streams

Stream API

  • Pure Java - Stream API instead of SQL eliminates the need of a query language
  • Dynamic Joins - Ability to perform joins as Java streams on the application side
  • Parallel Streams - Workload can automatically be divided over several threads

Short and Concise Type Safe Code

Type Safety

  • Code Generation - Automatic Java representation of the latest state of your database eliminates boilerplate code and the need of manually writing Java Entity classes while minimizing the risk for bugs.
  • Null Protection - Minimizes the risk involved with database null values by wrapping to Java Optionals
  • Enum Integration - Mapping of String columns to Java Enums increases memory efficiency and type safety

Lazy Evaluation

Lazy Evaluation for Increased Performance

  • Streams are Lazy - Content from the database is pulled as elements are needed and consumed
  • Pipeline Introspection - Optimized performance by short circuiting of stream operations

Tutorials

The tutorials are divided into three sections. The basics are covered in the first section without any expected prior knowledge of Speedment. This builds a foundation of knowledge needed to fully benefit from the following tutorials.

Basics

Sample applications

Extending Speedment

Resources

  • Documentation - Read the Speedment User Guide.
  • JavaDocs - Latest Speedment JavaDocs.
  • Examples - There are 15 detailed examples here and more can be found in the User Guide provided above.
  • Gitter Chatroom - Reach out to the Speedment developers and other community members via the Gitter chatroom.
  • Creating a Pull Request - Pull requests and improvement suggestions from the community are gladly accepted. Find more information here.

Requirements

Java Version

Speedment requires Java 8 or later. Make sure your IDE is configured to use JDK 8 (version 1.8.0_40 or newer).

Database Connectors

Speedment Open Source comes with support for the following databases out-of-the-box:

  • MySQL
  • MariaDB
  • PostgreSQL
  • SQLite

Enterprise database connectors include:

  • AS400
  • Cassandra
  • DB2
  • Informix
  • Oracle
  • Snowflake
  • SQL Server

For more information, see Speedment Licensing and Pricing.

Licenses

  • Speedment Open Source - This site covers the Speedment Open Source project available under the Apache 2 license.
  • Speedment Stream - The same great features as Speedment OSS with support for commercial databases. Learn more at speedment.com/stream.
  • Speedment HyperStream - An extension av Speedment Stream which also includes hypersonic query performance enabled by a unique in-JVM-memory management model. Learn more at speedment.com/hyperStream.

Copyright

Copyright (c) 2014-2019, Speedment, Inc. All Rights Reserved. Visit www.speedment.com for more info.

Analytics

Github activity visualized

More Repositories

1

jpa-streamer

JPAstreamer is a lightweight library for expressing JPA queries as Java Streams
Java
326
star
2

hol-streams

This project contains the source code for a hands on lab on Streams
Java
49
star
3

eventsourcing-examples

Examples on how to use Speedment in a Micro-Service environment. Event Sourcing with CQRS and Materialized Views.
Java
18
star
4

freeCodeCamp-tutorial

Contains resources for the Quarkus and JPAStreamer tutorial on freeCodeCamp.
Java
15
star
5

speedment-code-samples

Code samples for the Speedment ORM
Java
13
star
6

employees-webapp

CSS
10
star
7

jpa-streamer-demo

JPAstreamer Demo Project
HTML
9
star
8

avro-mocker

Generate mock data based on an Apache Avro schema and specific cardinality settings
Java
9
star
9

speedment-gradle-plugin

Speedment Gradle Plugin
Java
6
star
10

user-guide-code-samples

Here are the code samples used in the Speedment User's Guide
Java
4
star
11

oracle-java-magazine-examples

This repo contains Speedment examples from the article in Oracle Java Magazine
Java
4
star
12

speedment-doc

The documentation for Speedment
CSS
3
star
13

javaone2017-streams

Repository for the Speedment workshop "Database Actions with Java 9 Stream Syntax Instead of SQL" at JavaOne 2017
Java
3
star
14

speedment-com

The 2017 www.speedment.com website.
PHP
2
star
15

generate-speedment-sources

A command-line program that generates repeatable classes and interfaces for the Speedment Open Source project.
Java
2
star
16

support

Support Repository
2
star
17

speedment-doc-examples

Code examples from the Speedment documentations
Java
1
star
18

db-streams-the-sequel

This repo contains the example used in the article series "Database Streams, the Sequel"
Java
1
star
19

webinar-20171108

Repository for the webinar on November 8th, 2017.
Java
1
star
20

jpastreamer-quarkus-demo

Quarkus application with Hibernate, Panache and JPAStreamer.
HTML
1
star
21

aggregate-offheap

A demonstration of how to aggregate data off-heap
Java
1
star
22

javaone2017-bridging

Java
1
star
23

sakila-webapp

CSS
1
star
24

speedment-resources

This project holds resources such as pictures for web reference.
1
star
25

speedmentversion-maven-plugin

A Maven Plugin that Controls the version in the Speedment project
Java
1
star