在OSChina上看到這款開源輕量級的ORM框架,看了下例子,感受很是小巧輕量簡單。java
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(); } }
ActiveJDBC 是一個快速和輕量級的 Java 的 ORM 小型框架,語法簡單易於理解,同時支持多數據庫連接。ActiveJDBC 的文檔(javadoc)很是完善。基於如下原則設計:mysql
有關ActiveJDBC的特性的官方說明在這裏:http://code.google.com/p/activejdbc/wiki/Featuressql
項目發佈在Google Code網站上,地址是:http://activejdbc.googlecode.com 可使用SVN 將項目Check out下來。數據庫
ActiveJDBC 項目是使用Maven進行構建和管理JAR包的,具體怎樣使用Maven來進行構建,它的網站上寫得很詳細,Maven自己也很簡單。這裏我只是記錄下個人操做步驟,使用手動構建的。oracle
在MyEclipse裏新建一個WEB工程(JAVA工程也能夠), 而後,引入所須要的JAR包框架
這些JAR包能夠到http://ipsolutionsdev.com/snapshots/ 這裏下載,最新的JAR包在頁面最下面。上面這些JAR包缺一不可,我首先引入的是activejdbc包,而後根據ClassNotFoundException挨個導入的。工具
接着能夠看下ActiveJDBC文檔的Getting Started頁,寫得很是簡潔,可讓你很快上手。學習
建表語句是:測試
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)
);
AJ的表名與Model名是有命名約定的,好比Model名爲Employee,對應表名爲employees。
內容以下:
package cn.ijser.pojo;
import activejdbc.Model;
public class Employee extends Model {
}
沒有Getters和Setters? 沒錯,不須要,並且ActiveJDBC也不推薦。它是利用了JAVA的反射機制來進行識別的,不只沒必要寫Getters和Setters,連同fields也沒必要寫,只要你事先創建好表,AJ會自動爲你創建映射。並且也沒必要配置表名與POJO間的對應關係,由於AJ遵循「約定>配置」的原則,能夠省掉配置文件,很是方便簡單。
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();
}
}
}
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();
}
}
AJ的具體使用方法,能夠查看AJ的文檔,上面這個測試代碼只是向數據庫的employees表中寫入了一條記錄。
=========
PS:
比較慚愧的是,本身沒有學會使用Maven來進行構建和學習ActiveJDBC,繼續學習Maven…
感謝曹江華Arden的熱心解答。