輕量級ORM框架ActiveJDBC介紹

webphp 13年前發布 | 4K 次閱讀

這款開源輕量級的ORM框架,看了下例子,感覺非常小巧輕量簡單。

public class Main {
    public static void main(String[] args) {
        new DB("corporation").open("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/test",
                "root", "p@ssw0rd");
        new DB("university").open("oracle.jdbc.driver.OracleDriver",
                "jdbc:oracle:thin:@localhost:1521:xe",
                "activejdbc", "activejdbc");

    Employee.deleteAll();
    Student.deleteAll();

    Employee.createIt("first_name", "John", "last_name", "Doe");
    Employee.createIt("first_name", "Jane", "last_name", "Smith");

    Student.createIt("first_name", "Mike", "last_name", "Myers");
    Student.createIt("first_name", "Steven", "last_name", "Spielberg");

    System.out.println("*** Employees ***");
    Employee.findAll().dump();
    System.out.println("*** Students ***");
    Student.findAll().dump();

    new DB("corporation").close();
    new DB("university").close();
}

}</pre>

ActiveJDBC 是一個快速和輕量級的 Java 的 ORM 小型框架,語法簡單易于理解,同時支持多數據庫鏈接。ActiveJDBC 的文檔(javadoc)非常完善。基于以下原則設計:

  • 慣例重于配置(無配置)
  • 擁有 SQL 知識就足夠了
  • 輕量級而且直觀的代碼
  • 無會話
  • 無持久層管理
  • 無 proxying

有關ActiveJDBC的特性的官方說明在這里:http://code.google.com/p/activejdbc/wiki/Features

項目發布在Google Code網站上,地址是:http://activejdbc.googlecode.com 可以使用SVN 將項目Check out下來。

ActiveJDBC 項目是使用Maven進行構建和管理JAR包的,具體怎樣使用Maven來進行構建,它的網站上寫得很詳細,Maven本身也很簡單。這里我只是記錄下我的操作步驟,使用手動構建的。

1. 創建測試工程,引入必要的JAR包

在MyEclipse里新建一個WEB工程(JAVA工程也可以), 然后,引入所需要的JAR包

image

這些JAR包可以到http://ipsolutionsdev.com/snapshots/ 這里下載,最新的JAR包在頁面最下面。上面這些JAR包缺一不可,我首先引入的是activejdbc包,然后根據ClassNotFoundException挨個導入的。

接著可以看下ActiveJDBC文檔的Getting Started頁,寫得非常簡潔,可以讓你很快上手。

2. 創建數據庫和表

建表語句是:

    create database test;

use test;

create table (

id int(32) default not null auto_increment primary key,

first_name varchar(65),

last_name varchar(65)

);

</pre>
</blockquote>

AJ的表名與Model名是有命名約定的,比如Model名為Employee,對應表名為employees。

3. 新建一個POJO

內容如下:

    package cn.ijser.pojo;

import activejdbc.Model;

public class Employee extends Model {

}

</pre>
</blockquote>

沒 有Getters和Setters? 沒錯,不需要,而且ActiveJDBC也不推薦。它是利用了JAVA的反射機制來進行識別的,不僅不必寫Getters和Setters,連同 fields也不必寫,只要你事先建立好表,AJ會自動為你建立映射。而且也不必配置表名與POJO間的對應關系,因為AJ遵循“約定>配置”的原 則,可以省掉配置文件,非常方便簡單。

3. 建立一個創建Instrumentation的文件

Instrumentation是對已經編譯好的POJO們進行一下處理,添加了父類的靜態方法,這樣才可以像下面這樣使用:

List<Person> retirees = Person.where("age >= ?", 65);

否 則,AJ不會知道將要操作的表或數據庫,因為靜態方法是屬于類而不是對象的。這樣雖然稍微麻煩點,但是好處也是挺不錯的,它不必像其它ORM框架一樣,需 要使用第三個類來進行管理,比如JPA使用的PersistentManager和Hibernate 使用的Session。

盡管AJ需要增加一步額外的構建過程,但它使API的設計更加直觀和簡潔。

還有一點要說明的是,Instrumentation的創建也是很快的,而且只需要在程序編譯的時候進行創建即可。官方文檔中說50-60個models只需要5-7s,一般的小型程序(10個以內models的程序)只需要1-2秒即可完成。

官方文檔只主要介紹了使用Maven,Ant,和StandAlone三種方式,我使用的是另外一種,JAVA程序實現的。只需要創建一個工具類,然后在編譯之后,運行之前調用一下這個類的make方法即可。

    package cn.ijser.utils;

import activejdbc.instrumentation.Instrumentation;

public class MakeInstrumentationUtil {

public static void make() {

try {

Instrumentation instrumentation = new Instrumentation();

instrumentation.setOutputDirectory(ClassLoader

.getSystemResource(“”).getPath());

instrumentation.instrument();

} catch (Exception e) {

e.printStackTrace();

}

}

}

</pre>
</blockquote>

4. 創建測試類。

    package cn.ijser.test;

import activejdbc.Base;

import cn.ijser.pojo.Employee;

import cn.ijser.utils.MakeInstrumentationUtil;

public class Test {

public static void main(String[] args) {

MakeInstrumentationUtil.make(); # 這里創建Instrumentation

Base.open(“com.mysql.jdbc.Driver”, “jdbc:mysql://localhost/activejdbc”,

“root”, “sa”);

Employee e = new Employee();

e.set(“first_name”, “John”);

e.set(“last_name”, “ijse”);

e.save();

}

}


</pre>
</blockquote>

AJ的具體使用方法,可以查看AJ的文檔,上面這個測試代碼只是向數據庫的employees表中寫入了一條記錄。

=========

PS:

比較慚愧的是,自己沒有學會使用Maven來進行構建和學習ActiveJDBC,繼續學習Maven…

感謝曹江華Arden的熱心解答。

</span>

 本文由用戶 webphp 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!