輕量級ORM框架ActiveJDBC介紹
這款開源輕量級的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包
這些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>