У меня низкий опыт разработки и разработки БД с помощью SQL.Независимость базы данных Android/Java SQL от объекта
У меня есть Entity Пользователь:
public class User {
String name;
String secondName;
}
и DAO для этого:
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
}
}
И у меня есть вопрос.
Возможно ли сделать сохранение в процессе БД независимым для изменений класса пользователя?
Например: сейчас, как вы можете видеть, у меня есть 2 поля - имя и secondName
Saving Сейчас:
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
без изменений. (Если это возможно, конечно).
Поддерживается ли обратный процесс? Я имею в виду добавить и удалить поле \ параметры столбца. –
@ssh Вы должны реализовать его самостоятельно в SQLiteOpenHelper, но вам не нужно менять код сохранения/выборки. –
Похоже, что это нереальная задача сегодня :) –