Android/Java SQL数据库独立于实体



我在数据库设计和SQL开发方面经验不足。

我有实体用户:

public class User {
    String name;
    String secondName;
}

DAO for this

public interface UserDAO {
    // save
    void persistUser(User user);
    // obtain from DB
    User retrieveUser();
}
实现:

public class LibraryUserDAO implements UserDAO{
    /** SQL database actually*/    
    private SQLiteOpenHelper database;
    void persistUser(User user){
        // saving to DB
    }
    User retrieveUser(){
        // obtain from DB
    }
}

我有一个问题。

是否有可能使保存到DB进程独立于用户类的变化?

例如:现在,你可以看到我有两个字段- namesecondName

现在保存:

    SQLiteDatabase writableDatabase = database.getWritableDatabase();
    writableDatabase.beginTransaction();
    ContentValues cv = new ContentValues();
    cv.put("name", user.name);
    cv.put("secondName", user.secondName);
    writableDatabase.insert("users", null, cv);
    writableDatabase.close();

我想当你添加一个新的字段(例如year)到类User,在数据库中,这个字段自动添加为数据库中的一个新列(如果没有)。所以始终保持SQLiteOpenHelper类不变。(当然,如果可能的话)

考虑为Android使用一些ORM,例如ORMLite或GreenDAO。这样您就不必担心结构变化,因为您不必手动将pojo映射到DB表。

最新更新