ActiveAndroid -- Android 경량급 ORM 프레임 워 크

원본 블 로그 링크:http://linkyan.com/2013/05/about-activeandroid/
Github:ActiveAndroid
ActiveAndroid 는 가 벼 운 ORM 프레임 워 크 라 고 할 수 있 으 며, save () 와 delete () 등 을 통 해 삭제 와 검사 등 을 간단하게 할 수 있 습 니 다.배치 도 간단 하 다.
다음은 작가 의 원 어 입 니 다.
ActiveAndroid is an active record style ORM (object relational mapper). What does that mean exactly? Well, ActiveAndroid allows you to save and retrieve SQLite database records without ever writing a single SQL statement. Each database record is wrapped neatly into a class with methods like save() and delete().
ActiveAndroid does so much more than this though. Accessing the database is a hassle, to say the least, in Android. ActiveAndroid takes care of all the setup and messy stuff, and all with just a few simple steps of configuration.
시작 하 다
AndroidManifest. xml 에 이 두 개 를 추가 해 야 합 니 다.
  • AA_DB_NAME (이 name 은 고 칠 수 없 지만 선택 할 수 있 습 니 다. 쓰 지 않 으 면 기본 "Application. db" 값 입 니 다)
  • AA_DB_VERSION (optional – defaults to 1)
    ...
    <meta-data android:name="AA_DB_NAME" android:value="your.db" />
    <meta-data android:name="AA_DB_VERSION" android:value="5" />
    

  • 이것 <application> 은 반드시 지정 해 야 하지만, 당신 도 자신의 응용 프로그램 을 사용 하여 계승 할 수 있 습 니 다 com.activeandroid.app.Application
    
    public class MyApplication extends com.activeandroid.app.Application { ...
    

    만약 당신 이 원 하지 않 거나 계승 할 수 없다 면 com.activeandroid.app.Application 이렇게 하 세 요.
    
    public class MyApplication extends SomeLibraryApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        ActiveAndroid.initialize(this);
    }
    @Override
    public void onTerminate() {
        super.onTerminate();
        ActiveAndroid.dispose();
    }
    }
    
    ActiveAndroid.initialize(this); 초기 화 작업, ActiveAndroid.dispose(); 청소 작업
    데이터베이스 모델 만 들 기
    저 희 는 @Table(name = "Items") 을 사용 하여 표를 표시 하고 @Column(name = "Name") 를 사용 하여 열 을 표시 합 니 다. ActiveAndroid 는 자체 적 으로 증가 하 는 ID 를 메 인 키 로 한 다음 에 주석 설명 에 따라 클래스 를 데이터베이스 시트 로 표시 합 니 다.
    
    @Table(name = "Items")
    public class Item extends Model {
    @Column(name = "Name")
    public String name;
    @Column(name = "Category")
    public Category category;
        public Item(){
                super();
        }
        public Item(String name, Category category){
                super();
                this.name = name;
                this.category = category;
        }
    } 
    

    관계 에 의존 하 는 데이터베이스 시트
    만약 Item 과 Category 가 다 대 일 관계 라면, 우 리 는 이렇게 그들의 종 류 를 만 들 수 있 습 니 다.
    
    @Table(name = "Items")
    public class Item extends Model {
    @Column(name = "Name")
    public String name;
    @Column(name = "Category")
    public Category category;
    } 
    
    <!-- lang: java -->
    @Table(name = "Categories")
    public class Category extends Model {
    @Column(name = "Name")
    public String name;
    public List<Item> items() {
        return getMany(Item.class, "Category");
    }
    } 
    

    데이터베이스 에 데 이 터 를 저장 하고 업데이트 하 는 방법
    싱글 삽입
    카 테 고리 대상 저장
    
    Category restaurants = new Category();
    restaurants.name = "Restaurants";
    restaurants.save();
    

    category 를 할당 하고 데이터베이스 에 저장 합 니 다.
    
    Item item = new Item();
    item.category = restaurants;
    item.name = "Outback Steakhouse";
    item.save(); 
    

    일괄 삽입
    데 이 터 를 대량으로 삽입 하려 면 트 랜 잭 션 (transaction) 을 사용 하 는 것 이 좋 습 니 다.
    
    ActiveAndroid.beginTransaction();
    try {
            for (int i = 0; i < 100; i++) {
                Item item = new Item();
                item.name = "Example " + i;
                item.save();
            }
            ActiveAndroid.setTransactionSuccessful();
        }
    finally {
        ActiveAndroid.endTransaction();
    }
    

    사 무 를 사용 하면 40ms 밖 에 안 걸 리 고 그렇지 않 으 면 4 초 걸 립 니 다.
    기록 삭제
    우 리 는 기록 하 나 를 삭제 하 는 세 가지 방법 이 있다.
    
    Item item = Item.load(Item.class, 1);
    item.delete();
    
    
    <!-- lang: java -->
    Item.delete(Item.class, 1);
    
    <!-- lang: java -->
    new Delete().from(Item.class).where("Id = ?", 1).execute();
    

    쉽 죠?
    조회 데이터베이스
    저 자 는 조 회 를 SQLite 의 네 이 티 브 검색 어 처럼 만 들 었 습 니 다. 거의 모든 명령 을 포함 하고 있 습 니 다. com. activeandroid. query 패키지 에는 다음 과 같은 종류 가 있 습 니 다.
  • Delete
  • From
  • Join
  • Select
  • Set
  • Update

  • 예 를 들 어서 설명해 드릴 게 요.
        
    public static Item getRandom(Category category) {
        return new Select()
            .from(Item.class)
            .where("Category = ?", category.getId())
            .orderBy("RANDOM()")
            .executeSingle();
    } 
    

    대응 하 는 sqlite 조회 문 구 는 select * from Item where Category = ? order by RANDOM() 물론 다른 많은 명령 도 지원 합 니 다.
  • limit
  • offset
  • as
  • desc/asc
  • inner/outer/cross join
  • group by
  • having 등등
  • ActiveAndroid 프로젝트 의 tests 프로젝트 에서 테스트 사례 를 찾 을 수 있 습 니 다. 상세 한 설명 이 많 습 니 다.

    좋은 웹페이지 즐겨찾기