我工作的一個Android應用程序使用SQLCipher,ORMLite爲Android處理對POJO存儲與SQLite和傑克遜解析處理DAO創建的POJO。更好的方式使用SQLite
我想知道是否會有一個更好的模式,我正在使用(推薦stayforit)獲得相應的實體類給定的DAO。我有超過30個實體類,我不斷添加一些時間和每次,我必須創建一個DAO類,看起來與前一個完全一樣。我如何推廣使用泛型類?
這裏是我DbManager類:
public class DbManager {
private static DbManager instance;
private CipherDbHelper dbHelper;
private SecureSharedPreferences settings;
private DbManager() {
}
private DbManager(Context context, String password) {
SQLiteDatabase.loadLibs(context);
dbHelper = new CipherDbHelper(context, password);
}
public static void init(Context context, String password) {
instance = new DbManager(context, password);
}
public static DbManager getInstance() {
if (instance == null) {
Log.e("DbManager", "DbManager is null");
}
return instance;
}
public <D extends Dao<T, String>, T> D getDAO(Class<T> clz) throws SQLException {
return dbHelper.getDao(clz);
}
}
下面是一個經常性的DAO類,我需要每一個我一個POJO實體添加到我的項目的時間產生的一個例子:
public class CategoriesDAO extends BaseDAO<EntityCategories> {
private static CategoriesDAO instance;
private CategoriesDAO() {
}
public synchronized static CategoriesDAO getInstance() {
if (instance == null) {
instance = new CategoriesDAO();
}
return instance;
}
@Override
public Dao<EntityCategories, String> getDAO() throws SQLException, java.sql.SQLException {
return DbManager.getInstance().getDAO(EntityCategories.class);
}
}
這裏我如何在活動中使用它:
CategoriesDAO.getInstance().addOrUpdate(categories);
你可以看看碗櫃作爲替代ORMLite。 https://guides.codepath.com/android/Easier-SQL-with-Cupboard –
@ cricket_007它看起來不錯,但我需要能夠處理特定ORM不支持的嵌套對象(單對多關係) ... – Jaythaking
檢出[JDXA ORM](http://softwaretree.com/v1/products/jdxa/jdxa.html)。 JDXA可以處理嵌套對象,並且不需要爲每個實體(模型)類創建DAO類。 –