Java 安卓-有没有超级舒适的方式来存储持久数据?

Java 安卓-有没有超级舒适的方式来存储持久数据?,java,android,data-modeling,Java,Android,Data Modeling,我希望我的数据模型以及getter和setter设置为一个简单的Java类,让Eclipse创建所有getter和setter,如果我调用它们,我希望数据持久存储。有一种使用SQLiteDatabase类的方法,但它仍然不像使用简单Java类那样舒适。它有框架吗。(而且,不仅仅是android。(我是从web框架Grails中得到这个想法的) 我不明白为什么这种OO语言有这样一种非常舒适的方式,即使用对象、getter和setter来轻松定义数据模型,但说到持久性,我需要几十个助手类。这不是一个

我希望我的数据模型以及getter和setter设置为一个简单的Java类,让Eclipse创建所有getter和setter,如果我调用它们,我希望数据持久存储。有一种使用SQLiteDatabase类的方法,但它仍然不像使用简单Java类那样舒适。它有框架吗。(而且,不仅仅是android。(我是从web框架Grails中得到这个想法的)


我不明白为什么这种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);
// ...