輕量級ORM框架ActiveJDBC介紹

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

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

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

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

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

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)

);

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

3. 新建一個POJO

內容以下:

package cn.ijser.pojo;

import activejdbc.Model;

public class Employee extends Model {

}

沒有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();

}

}

}

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();

}

}

 

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

=========

PS:

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

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

相關文章
相關標籤/搜索