轻量级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的热心解答。

相关文章
相关标签/搜索