Description
Speedment accelerates your development speed and makes programming so easy and fun!
When you use Speedment for database querying, you do not have to learn a new APIs or use complex ORMs. Everything is standard Java 8 and works
out of the box!
This site covers the Speedment Open Source project available under the Apache 2 license. If you are interested in the enterprise product with support for commercial databases and in-memory acceleration, check out www.speedment.com!
Speedment alternatives and similar libraries
Based on the "Database" category.
Alternatively, view Speedment alternatives based on common mentions on social networks and blogs.
-
MapDB
MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine. -
orientdb
OrientDB is the most versatile DBMS supporting Graph, Document, Reactive, Full-Text and Geospatial models in one Multi-Model product. OrientDB can run distributed (Multi-Master), supports SQL, ACID Transactions, Full-Text indexing and Reactive Queries. -
Crate
CrateDB is a distributed and scalable SQL database for storing and analyzing massive amounts of data in near real-time, even with complex queries. It is PostgreSQL-compatible, and based on Lucene. -
ObjectBox embedded database
Android Database - first and fast, lightweight on-device vector database -
Chronicle Map
Replicate your Key Value Store across your network, with consistency, persistance and performance. -
JDBI
The Jdbi library provides convenient, idiomatic access to relational databases in Java and other JVM technologies such as Kotlin, Clojure or Scala. -
sql2o
sql2o is a small library, which makes it easy to convert the result of your sql-statements into objects. No resultset hacking required. Kind of like an orm, but without the sql-generation capabilities. Supports named parameters. -
JetBrains Xodus
Transactional schema-less embedded database used by JetBrains YouTrack and JetBrains Hub. -
FlexyPool
FlexyPool adds metrics and failover strategies to a given Connection Pool, allowing it to resize on demand.
InfluxDB - Purpose built for real-time analytics at any scale.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Speedment or a related project?
Popular Comparisons
README
Java Stream ORM
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.
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!
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
- 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
- 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 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
- Tutorial 3 - Speedment Spring Boot Integration; REST assured - it is easy
- Tutorial 4 - Speedment filters based on Json Web Tokens
- Tutorial 5 - Log errors in a database
- Tutorial 6 - Use Speedment with Java EE
- Tutorial 7 - Create Event Sourced Systems
- Tutorial 8 - Writing Your Own Extensions
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.
*Note that all licence references and agreements mentioned in the Speedment README section above
are relevant to that project's source code only.