輕量級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>