Top Related Projects
greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases.
Realm is a mobile database: a replacement for SQLite & ORMs
Android Database - first and fast, lightweight on-device vector database
requery - modern SQL based query & persistence for Java / Kotlin / Android
Insanely easy way to work with Android Database.
A blazing fast, powerful, and very simple ORM android database library that writes database code for you.
Quick Overview
ORMLite for Android is a lightweight Object Relational Mapping (ORM) Java package that provides simple and efficient database operations for Android applications. It supports SQLite databases and offers a straightforward way to persist Java objects to database tables without the complexity of full-scale ORM tools.
Pros
- Easy to use with minimal configuration and setup
- Lightweight and efficient, suitable for mobile applications
- Supports complex queries and relationships between objects
- Integrates well with Android's SQLiteOpenHelper
Cons
- Limited support for advanced ORM features compared to larger frameworks
- May require more manual coding for complex scenarios
- Performance can be slower than raw SQL for very complex queries
- Learning curve for developers new to ORM concepts
Code Examples
- Defining a database object:
@DatabaseTable(tableName = "accounts")
public class Account {
@DatabaseField(id = true)
private String name;
@DatabaseField
private String password;
// Constructor, getters, and setters
}
- Creating and using a DAO (Data Access Object):
// In your database helper class
private Dao<Account, String> accountDao;
public Dao<Account, String> getAccountDao() throws SQLException {
if (accountDao == null) {
accountDao = getDao(Account.class);
}
return accountDao;
}
// Using the DAO
Account account = new Account("username", "password");
getAccountDao().create(account);
- Querying the database:
QueryBuilder<Account, String> queryBuilder = accountDao.queryBuilder();
queryBuilder.where().eq("name", "username");
List<Account> accounts = queryBuilder.query();
Getting Started
- Add ORMLite dependencies to your
build.gradle
file:
dependencies {
implementation 'com.j256.ormlite:ormlite-android:5.1'
implementation 'com.j256.ormlite:ormlite-core:5.1'
}
- Create a database helper class:
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "myapp.db";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, Account.class);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
// Handle database upgrades here
}
}
- Use the DatabaseHelper in your activities or fragments to perform database operations.
Competitor Comparisons
greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases.
Pros of greenDAO
- Better performance due to optimized code generation
- Simpler API and easier to use for beginners
- Built-in support for encryption and multi-threading
Cons of greenDAO
- Less flexible than ORMLite for complex queries
- Limited support for relationships between entities
- Smaller community and fewer resources compared to ORMLite
Code Comparison
greenDAO example:
@Entity
public class User {
@Id private Long id;
private String name;
private int age;
}
ORMLite example:
@DatabaseTable(tableName = "users")
public class User {
@DatabaseField(id = true)
private Long id;
@DatabaseField
private String name;
@DatabaseField
private int age;
}
Both libraries offer annotation-based entity definition, but greenDAO's syntax is slightly more concise. ORMLite provides more granular control over database fields and table properties through its annotations.
greenDAO is generally easier to set up and use, especially for simpler database structures. It offers better performance due to its code generation approach. However, ORMLite provides more flexibility for complex queries and relationships between entities.
ORMLite has a larger community and more extensive documentation, which can be beneficial for developers seeking support or resources. greenDAO, while powerful, has a smaller ecosystem.
Choose greenDAO for simpler projects prioritizing performance, or ORMLite for more complex database structures requiring advanced querying capabilities.
Realm is a mobile database: a replacement for SQLite & ORMs
Pros of Realm Java
- Faster performance, especially for complex queries and large datasets
- Object-oriented database with real-time synchronization capabilities
- Simpler API and less boilerplate code required
Cons of Realm Java
- Steeper learning curve for developers familiar with SQLite-based ORMs
- Limited flexibility in database schema changes after initial deployment
- Larger APK size due to included native libraries
Code Comparison
ORMLite Android:
@DatabaseTable(tableName = "accounts")
public class Account {
@DatabaseField(id = true)
private String name;
@DatabaseField
private String password;
}
Realm Java:
public class Account extends RealmObject {
@PrimaryKey
private String name;
private String password;
}
Both ORMLite Android and Realm Java are popular database solutions for Android development. ORMLite Android is a lightweight ORM that works with SQLite, while Realm Java is a more modern, object-oriented database. Realm Java offers better performance and real-time capabilities, but comes with a steeper learning curve and less flexibility in schema changes. ORMLite Android is more familiar to developers used to SQLite and provides more flexibility, but may be slower for complex operations. The choice between the two depends on project requirements and developer preferences.
Android Database - first and fast, lightweight on-device vector database
Pros of ObjectBox
- Higher performance and lower memory footprint
- Built-in support for reactive programming and data synchronization
- More modern API design with better support for Kotlin
Cons of ObjectBox
- Less mature and smaller community compared to ORMLite
- Limited database migration tools
- Steeper learning curve for developers familiar with traditional ORM concepts
Code Comparison
ObjectBox:
@Entity
data class User(
@Id var id: Long = 0,
var name: String,
var age: Int
)
val box = boxStore.boxFor(User::class.java)
box.put(User(name = "Alice", age = 30))
ORMLite:
@DatabaseTable(tableName = "users")
public class User {
@DatabaseField(id = true)
private long id;
@DatabaseField
private String name;
@DatabaseField
private int age;
}
Dao<User, Long> userDao = DaoManager.createDao(connectionSource, User.class);
userDao.create(new User("Alice", 30));
ObjectBox offers a more concise syntax and better Kotlin integration, while ORMLite provides a familiar SQL-like approach. ObjectBox's performance advantages make it suitable for high-throughput applications, but ORMLite's maturity and extensive documentation may be preferable for simpler projects or those with complex migration needs.
requery - modern SQL based query & persistence for Java / Kotlin / Android
Pros of requery
- Modern API design with RxJava support and Kotlin extensions
- Better performance, especially for complex queries and large datasets
- More flexible query building and support for custom types
Cons of requery
- Steeper learning curve due to more advanced features
- Less mature and potentially less stable than ORMLite
- Smaller community and fewer resources available online
Code Comparison
ORMLite query example:
QueryBuilder<Account, String> queryBuilder = accountDao.queryBuilder();
queryBuilder.where().eq("name", "John");
List<Account> accounts = accountDao.query(queryBuilder.prepare());
requery query example:
List<Account> accounts = data
.select(Account.class)
.where(Account.NAME.eq("John"))
.get()
.toList();
Both libraries provide ORM functionality for Android, but requery offers a more modern and flexible approach with potentially better performance. ORMLite, being more established, may be easier to learn and has a larger community. The choice between them depends on project requirements, performance needs, and developer preferences.
Insanely easy way to work with Android Database.
Pros of Sugar
- Simpler API with less boilerplate code
- Automatic table creation and schema updates
- Easier to set up and use for beginners
Cons of Sugar
- Less flexible and customizable than ORMLite
- Limited support for complex queries and relationships
- Smaller community and fewer resources available
Code Comparison
Sugar:
@Table
public class Book extends SugarRecord {
String title;
String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
}
ORMLite:
@DatabaseTable(tableName = "books")
public class Book {
@DatabaseField(id = true)
private int id;
@DatabaseField
private String title;
@DatabaseField
private String author;
public Book() {}
}
Sugar offers a more concise syntax with automatic table creation, while ORMLite provides more control over database fields and relationships. Sugar's approach is simpler for basic use cases, but ORMLite's flexibility allows for more complex database operations and customization.
Both libraries aim to simplify Android database management, but they cater to different levels of complexity and user preferences. Sugar is better suited for small to medium-sized projects with straightforward database needs, while ORMLite is more appropriate for larger projects requiring advanced features and fine-grained control over database operations.
A blazing fast, powerful, and very simple ORM android database library that writes database code for you.
Pros of DBFlow
- More modern and actively maintained
- Supports Kotlin and RxJava integration
- Offers more advanced features like migrations and model caching
Cons of DBFlow
- Steeper learning curve due to more complex API
- Larger library size and potential performance overhead
- Less documentation and community support compared to ORMLite
Code Comparison
ORMLite example:
@DatabaseTable(tableName = "accounts")
public class Account {
@DatabaseField(id = true)
private String name;
@DatabaseField
private String password;
}
DBFlow example:
@Table(database = AppDatabase::class)
class Account(@PrimaryKey var name: String = "",
@Column var password: String = "")
Both libraries provide annotation-based ORM solutions for Android, but DBFlow offers a more concise syntax, especially when used with Kotlin. ORMLite has been around longer and has a simpler API, making it easier for beginners. DBFlow, on the other hand, provides more advanced features and better integration with modern Android development practices.
While ORMLite is still a solid choice for simpler projects, DBFlow might be more suitable for complex applications that require advanced database operations and want to leverage Kotlin's language features.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
ORMLite Android
This package provides the Android specific functionality. The released jars for this include the [ormlite-core] https://github.com/j256/ormlite-core) package as well. Users that are connecting to SQL databases via JDBC connections should download the ormlite-jdbc package instead of this Android one.
- For more background on ORMLite, see the ormlite-core repo.
- For more information, visit the ORMLite home page.
- Online documentation can be found off the home page. Here's the getting started docs. Here are the code Javadocs.
- Browse the code on the git repository. (Coverage is low because most of this needs to be tested on an Android simulator)
- Maven packages are published via
Enjoy, Gray Watson
Maven Configuration
Maven packages are published via which includes the ormlite-core classes.
For JDBC usage:
<dependency>
<groupId>com.j256.ormlite</groupId>
<artifactId>ormlite-android</artifactId>
<version>6.0</version>
</dependency>
ChangeLog Release Notes
The ChangeLog file comes from the ormlite-core repository. See the ChangeLog.txt file.
Top Related Projects
greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases.
Realm is a mobile database: a replacement for SQLite & ORMs
Android Database - first and fast, lightweight on-device vector database
requery - modern SQL based query & persistence for Java / Kotlin / Android
Insanely easy way to work with Android Database.
A blazing fast, powerful, and very simple ORM android database library that writes database code for you.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot