A modern SQL-based object mapping and query library for Java, Kotlin, and Android with RxJava and Java 8 support.
requery is an object-relational mapping (ORM) and SQL query library for Java, Kotlin, and Android. It enables developers to map Java/Kotlin objects to database tables, generate type-safe SQL queries, and perform database operations without using reflection. It solves the problem of verbose, error-prone SQL string concatenation and provides a modern alternative to JPA providers.
Java and Kotlin developers building database-driven applications, especially Android developers needing efficient SQLite persistence and teams seeking a lightweight, type-safe ORM with modern language support.
Developers choose requery for its reflection-free design (improving performance), compile-time entity validation, seamless integration with RxJava and Java 8 features, and a clean, type-safe query DSL that maps directly to SQL.
requery - modern SQL based query & persistence for Java / Kotlin / Android
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses compile-time annotation processing to generate entity classes, resulting in fast startup and runtime performance comparable to native Android Cursor APIs, as highlighted in the README for Android optimization.
Provides a fluent, compile-time validated query API that maps directly to SQL, eliminating error-prone string concatenation and offering IntelliSense support in IDEs, demonstrated in the query examples.
Seamlessly supports Java 8 Streams, RxJava Observables, and Kotlin property references, enabling reactive and functional programming patterns, with code snippets showing Stream and Observable usage.
Optimized for Android with specific support for SQLite, RecyclerView, and DataBinding, making it a natural fit for mobile development, as noted in the features and Android example sections.
Only supports a subset of JPA annotations and is not a full JPA provider, which can hinder migration from standard JPA-based systems like Hibernate, as admitted in the 'vs JPA' section.
When using immutable entities such as AutoValue, features like lifecycle callbacks or partial updates are not available, requiring compromises in design, as documented in the project wiki.
The annotation processing step can increase build times and requires careful Gradle or Maven configuration, which might complicate setup and CI/CD pipelines for some teams.
Compared to established ORMs like Hibernate, requery has a smaller community and fewer third-party plugins or integrations, potentially affecting long-term support and troubleshooting resources.
requery is an open-source alternative to the following products: