Alan Moment
  • Introduction
  • 智慧家庭
    • Fibaro 系統整合便宜的 IP Cam
  • Life
    • 用AWS Glacier做最後的冷資料備份
    • 如何在macOS修改影音檔日期
  • 3D Printer
    • Atom2.5EX 之血淚組裝
    • 列印經驗紀錄
      • SpoolHolder
    • 製圖經驗
      • Turntable
      • 重製Atom3散熱風扇
    • 線材經驗
      • PETG
        • 首測
  • Kubernetes
    • 使用Kops建立Kubernetes
    • 使用HelmV2
    • Kubernetes的技術問題排解技巧
  • PHP
    • 管理PHP Library的利器Composer
    • PHP安裝JSON
    • Phalcon首發
    • Gearman Job Worker for PHP
    • Laravel 首發 !!!
    • Data Encrypt & Decrypt
  • Python
    • Django + Python 開發環境建置
  • Android
    • Android zipcode library of maven
    • Android use foreign object of OrmLite
    • ProgressBar while loading ListView of Android
    • AsyncTask download image by the Android
    • Use Thread control Android UI
    • Android Universal Image Loader
  • Ruby on Rails
    • Install rmagick on the Windows of Ruby on Rails
    • Ruby on Rails deploy on Heroku
    • Ruby on Rails 小問題
  • React
    • Ditched AngularJS for React
  • Tessel
    • 很潮的 Tessel
    • Connect to Slack on Tessel
    • Baby Help on Tessel
  • Node.js
    • CentOS 安装 Node.js 0.8.5
  • OOAD
    • Injection Principle Design Pattern
  • Linux
    • SSH免密碼登入遠端電腦
    • Apache與Tomcat的結合
    • The bash auto build
  • Hadoop
    • CentOS 5.5 + Hadoop 0.20
    • CentOS 5.5 + Hbase 0.94.8
    • Hadoop + Hbase 叢集環境
    • Hadoop 溝通橋梁之 Thrift 0.7
    • 使用MapReduce之替代方案Hive
    • 使用Sqoop將MySQL資料匯入Hbase
  • Database
    • 吃足苦頭的Mssql
  • IDE
    • Netbeans console中文亂碼解決方法
    • 用NetBeans開發Ruby On Rails
  • Agile
    • 淺談我的Agile
  • 協作工具
    • 建置專屬自己的Github之Gitlab
    • Gitlab 4.1 upgrade to Gitlab 6.0超偷懶方法
    • Install Phabricator and run on the Gitlab
    • Phabricator 基本應用
    • Phabricator review code應用
    • Redmine之基本建置與Scrum應用
    • Omnibus Gitlab 7 基礎操作
    • Git Push Notify to Slack on Gitlab
    • phabricator-extensions-Sprint 無法抓到正確的 Story Points
  • 其他
    • 慶祝Octopress開張
    • 走在時尚的尖端! Ghost
    • 大搬家
    • 網頁教學初體驗
    • 網路攻擊很猖狂
Powered by GitBook
On this page
  • 建立 Major
  • 建立 Minor
  • 建立外部物件
  • Usage

Was this helpful?

  1. Android

Android use foreign object of OrmLite

PreviousAndroid zipcode library of mavenNextProgressBar while loading ListView of Android

Last updated 3 years ago

Was this helpful?

Android 也有很好用的 ActiveRecord 可以應用,提供了非常多的函式方便應用,架構也非常清楚,在跟 SqlLite 溝通時不再需要自己造輪子。

這邊記錄當 ValueObject 有繼承關係,又必須要有主附表關係時 OrmLite 的 Foreign Key 應用方法。

建立 Major

類似像 MySql 的主附表應用,主表如下,@DatabaseTable是用在若要另外建立表名,則必須要設定這個值,若沒設定預設會用 class 的名字建立。 @DatabaseField則是欄位名稱。

package com.data;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

/**
* Created by Alan on 2013/9/18.
*/
@DatabaseTable(tableName="Major")
public class Major {

  @DatabaseField
  private String parent;

  public void setParent(String parent) {
    this.parent = parent;
  }

  public String getParent() {
    return this.parent;
  }

}

建立 Minor

當 Minor 與 Major 是繼承關係時,同時又必須要包含另外的物件。這邊的@DatabaseField在參數中有foreign代表著這個屬性是外部鍵,指向另外一個物件的主鍵。並且foreignAutoRefresh是新增一筆資料後不用另外 refresh。

package com.data;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

/**
* Created by Alan on 2013/9/18.
*/
@DatabaseTable(tableName = "Minor")
public class Minor extends Major {

  @DatabaseField(foreign=true, foreignAutoRefresh=true)
  private Other other;

  public Minor() {
  }

  @DatabaseField
  private String child;

  public void setChild(String child) {
    this.child = child;
  }

  public String getChild() {
    return this.child;
  }

  /**
  * 設定外部物件
  */
  public void setOther(Other other) {
    this.other = other;
  }

  /**
  * 取得外部物件
  */
  public Other getOther() {
    return this.other;
  }

}

建立外部物件

外部物件若要和別的物件有 Composition 的關係,在這邊必須要有主鍵,而我設定generatedId=true就類似 MySql 的auto_increment屬性,讓物件可以自動生成 ID,以便和別的物件建立指向關係。

package com.data;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

/**
* Created by Alan on 2013/9/18.
*/
@DatabaseTable(tableName="Other")
public class Other {

  @DatabaseField(generatedId=true)
  private Long id;

  @DatabaseField
  private String name;

  public Other() {}

  public void setId(Long id) {
    this.id = id;
  }

  public Long getId() {
    return this.id;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getName() {
    return this.name;
  }

}

Usage

當這些關係建立後。可以用下列方法取得主物件的屬性

Minor minor = new Minor();
minor.getParent();

也可以用下列方法取得外部物件的屬性。

Minor minor = new Minor();
minor.getOther().getName();

我覺得用起來超方便的,而且架構很清楚。

Oct 1st, 2013 12:58:00am

OrmLite