Android
ORMLite in android
수색…
안드로이드 OrmLite SQLite 예제를 통해
ORMLite 는 더 많은 표준 ORM 패키지의 복잡성과 오버 헤드를 피하면서 SQL 데이터베이스에 지속되는 Java 객체를위한 간단하고 가벼운 기능을 제공하는 객체 관계형 매핑 패키지입니다.
Android 용으로 말하면 OrmLite는 지원되는 즉시 사용 가능한 데이터베이스 인 SQLite를 통해 구현됩니다. SQLite에 액세스하기 위해 API를 직접 호출합니다.
받침대 설정
시작하려면 패키지를 빌드 gradle에 포함시켜야합니다.
// https://mvnrepository.com/artifact/com.j256.ormlite/ormlite-android
compile group: 'com.j256.ormlite', name: 'ormlite-android', version: '5.0'
POJO configuration
그런 다음 POJO가 데이터베이스에 유지되도록 구성해야합니다. 주석에주의를 기울여야합니다.
- 각 클래스의 맨 위에 @DatabaseTable 주석을 추가하십시오. @Entity를 사용할 수도 있습니다.
- 지속될 각 필드 앞에 @DatabaseField 주석을 추가하십시오. @Column과 다른 것을 사용할 수도 있습니다.
- 적어도 패키지 가시성을 가진 각 클래스에 인수가없는 생성자를 추가하십시오.
@DatabaseTable(tableName = "form_model")
public class FormModel implements Serializable {
@DatabaseField(generatedId = true)
private Long id;
@DatabaseField(dataType = DataType.SERIALIZABLE)
ArrayList<ReviewItem> reviewItems;
@DatabaseField(index = true)
private String username;
@DatabaseField
private String createdAt;
public FormModel() {
}
public FormModel(ArrayList<ReviewItem> reviewItems, String username, String createdAt) {
this.reviewItems = reviewItems;
this.username = username;
this.createdAt = createdAt;
}
}
위의 예에서 4 개의 필드가있는 하나의 테이블 (form_model)이 있습니다.
id 필드는 자동 생성 색인입니다.
username은 데이터베이스에 대한 인덱스입니다.
주석에 대한 자세한 내용은 공식 문서를 참조하십시오 .
데이터베이스 도우미
계속하려면 OrmLiteSqliteOpenHelper 클래스를 확장해야하는 데이터베이스 도우미 클래스를 만들어야합니다.
이 클래스는 응용 프로그램이 설치 될 때 데이터베이스를 만들고 업그레이드하며 다른 클래스에서 사용하는 DAO 클래스도 제공 할 수 있습니다.
DAO는 데이터 액세스 개체의 약자이며 모든 스크럼 기능을 제공하며 단일 지속 클래스 처리를 전문으로합니다.
헬퍼 클래스는 다음 두 가지 메소드를 구현해야합니다.
onCreate (SQLiteDatabase sqliteDatabase, ConnectionSource connectionSource);
onCreate는 앱이 처음 설치 될 때 데이터베이스를 생성합니다.
onUpgrade (SQLiteDatabase 데이터베이스, ConnectionSource connectionSource, int oldVersion, int newVersion);
onUpgrade는 앱을 새 버전으로 업그레이드 할 때 데이터베이스 테이블 업그레이드를 처리합니다.
데이터베이스 도우미 클래스 예제 :
public class OrmLite extends OrmLiteSqliteOpenHelper {
//Database name
private static final String DATABASE_NAME = "gaia";
//Version of the database. Changing the version will call {@Link OrmLite.onUpgrade}
private static final int DATABASE_VERSION = 2;
/**
* The data access object used to interact with the Sqlite database to do C.R.U.D operations.
*/
private Dao<FormModel, Long> todoDao;
public OrmLite(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION,
/**
* R.raw.ormlite_config is a reference to the ormlite_config2.txt file in the
* /res/raw/ directory of this project
* */
R.raw.ormlite_config2);
}
@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
try {
/**
* creates the database table
*/
TableUtils.createTable(connectionSource, FormModel.class);
} catch (SQLException e) {
e.printStackTrace();
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
}
/*
It is called when you construct a SQLiteOpenHelper with version newer than the version of the opened database.
*/
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource,
int oldVersion, int newVersion) {
try {
/**
* Recreates the database when onUpgrade is called by the framework
*/
TableUtils.dropTable(connectionSource, FormModel.class, false);
onCreate(database, connectionSource);
} catch (SQLException | java.sql.SQLException e) {
e.printStackTrace();
}
}
/**
* Returns an instance of the data access object
* @return
* @throws SQLException
*/
public Dao<FormModel, Long> getDao() throws SQLException {
if(todoDao == null) {
try {
todoDao = getDao(FormModel.class);
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
}
return todoDao;
}
}
SQLite에 개체 유지
마지막으로 객체를 데이터베이스에 지속시키는 클래스.
public class ReviewPresenter {
Dao<FormModel, Long> simpleDao;
public ReviewPresenter(Application application) {
this.application = (GaiaApplication) application;
simpleDao = this.application.getHelper().getDao();
}
public void storeFormToSqLite(FormModel form) {
try {
simpleDao.create(form);
} catch (SQLException e) {
e.printStackTrace();
}
List<FormModel> list = null;
try {
// query for all of the data objects in the database
list = simpleDao.queryForAll();
} catch (SQLException e) {
e.printStackTrace();
}
// our string builder for building the content-view
StringBuilder sb = new StringBuilder();
int simpleC = 1;
for (FormModel simple : list) {
sb.append('#').append(simpleC).append(": ").append(simple.getUsername()).append('\n');
simpleC++;
}
System.out.println(sb.toString());
}
//Query to database to get all forms by username
public List<FormModel> getAllFormsByUsername(String username) {
List<FormModel> results = null;
try {
results = simpleDao.queryBuilder().where().eq("username", PreferencesManager.getInstance().getString(Constants.USERNAME)).query();
} catch (SQLException e) {
e.printStackTrace();
}
return results;
}
}
위 클래스의 생성자에서 DOA의 접근자는 다음과 같이 정의됩니다.
private OrmLite dbHelper = null;
/*
Provides the SQLite Helper Object among the application
*/
public OrmLite getHelper() {
if (dbHelper == null) {
dbHelper = OpenHelperManager.getHelper(this, OrmLite.class);
}
return dbHelper;
}