Java 安卓-有没有超级舒适的方式来存储持久数据?
我希望我的数据模型以及getter和setter设置为一个简单的Java类,让Eclipse创建所有getter和setter,如果我调用它们,我希望数据持久存储。有一种使用SQLiteDatabase类的方法,但它仍然不像使用简单Java类那样舒适。它有框架吗。(而且,不仅仅是android。(我是从web框架Grails中得到这个想法的)Java 安卓-有没有超级舒适的方式来存储持久数据?,java,android,data-modeling,Java,Android,Data Modeling,我希望我的数据模型以及getter和setter设置为一个简单的Java类,让Eclipse创建所有getter和setter,如果我调用它们,我希望数据持久存储。有一种使用SQLiteDatabase类的方法,但它仍然不像使用简单Java类那样舒适。它有框架吗。(而且,不仅仅是android。(我是从web框架Grails中得到这个想法的) 我不明白为什么这种OO语言有这样一种非常舒适的方式,即使用对象、getter和setter来轻松定义数据模型,但说到持久性,我需要几十个助手类。这不是一个
我不明白为什么这种OO语言有这样一种非常舒适的方式,即使用对象、getter和setter来轻松定义数据模型,但说到持久性,我需要几十个助手类。这不是一个具体的问题,但我希望您能有一个想法。使用共享首选项来存储数据。请阅读本教程-->
共享首选项可能是少量数据的一个选项,但数据类型有限。我启动了开源项目,以在使用样板代码时消除样板代码()
另一种解决方案是以JSON格式存储数据,并使用一些数据绑定工具(如:)-还可以存储JSON数据,这是一种使用POJO在Sqlite中存储数据的优雅方式。示例: User.java
@Entity
public class User {
@PrimaryKey
private int uid;
@ColumnInfo(name = "first_name")
private String firstName;
@ColumnInfo(name = "last_name")
private String lastName;
// Getters and setters are ignored for brevity,
// but they're required for Room to work.
}
UserDao.java
@Dao
public interface UserDao {
@Query("SELECT * FROM user")
List<User> getAll();
@Query("SELECT * FROM user WHERE uid IN (:userIds)")
List<User> loadAllByIds(int[] userIds);
@Query("SELECT * FROM user WHERE first_name LIKE :first AND "
+ "last_name LIKE :last LIMIT 1")
User findByName(String first, String last);
@Insert
void insertAll(User... users);
@Delete
void delete(User user);
}
创建上述文件后,使用以下代码获得所创建数据库的实例:
AppDatabase db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "database-name").build();
UserDao dao = db.userDao
该玩了
List<User> users = dao.getAll();
dao.insertAll(users);
// ...
List users=dao.getAll();
insertAll(用户);
// ...
如果您使用Kotlin(强烈推荐),它对数据对象更简洁。这看起来很有趣。谢谢!我的问题太老了……好时光……是的,房间还不错,尽管我认为“超级简单”的部分值得商榷:)优雅也许不那么值得商榷?我会签字同意:)
AppDatabase db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "database-name").build();
UserDao dao = db.userDao
List<User> users = dao.getAll();
dao.insertAll(users);
// ...