2015-09-02 2 views
1

У меня низкий опыт разработки и разработки БД с помощью 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 без изменений. (Если это возможно, конечно).

ответ

0

Рассмотрите возможность использования некоторых ORM для Android, например ORMLite или GreenDAO. Тогда вам не придется беспокоиться о изменениях структуры, потому что вам не нужно вручную сопоставлять POJO с таблицами DB.

+0

Поддерживается ли обратный процесс? Я имею в виду добавить и удалить поле \ параметры столбца. –

+0

@ssh Вы должны реализовать его самостоятельно в SQLiteOpenHelper, но вам не нужно менять код сохранения/выборки. –

+0

Похоже, что это нереальная задача сегодня :) –

Смежные вопросы