JORM

JDBC ORM Framework
授权协议 Apache
开发语言 Java
所属分类 程序开发、 ORM/持久层框架
软件类型 开源软件
地区 国产
投 递 者 包兴思
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

> 特点
  1.支持多数据源管理和配置
  2.自动封装Entity
  3.支持事务
  4.支持存储过程的方便调用
  5.支持lazy加载
  6.支持分页查询
  7.支持多种数据库H2,MySQL,Oracle,PostgrSQL,SQLServer 
  8.支持多种主流数据库连接池,如c3p0,proxool,dbcp,bonecp等
  9.自动管理数据库连接的生命周期

> 要求
  1.JDK 1.5 or later
  2.如需要lazy加载,需要引入cglib或javaassit,具体可配置

 > Maven dependency
   <dependency>
           <groupId>
net.sf.javaclub</groupId>
           <artifactId>
gerald-jorm</artifactId>
           <version>1.0.7.GA</version>
   </dependency>
          

> 示例
  1.添加
  Session session = Jorm.getSession();
  User u = new User("Gerald.Chen", "男", 21, "job");;
  session.save(u);

  2.删除
  session.clean(User.class);// 清空表
  session.delete(User.class, "id > 100");// 指定条件删除

  session.delete(user);

  3.查询
  User user = session.read(User.class, 1);// 根据主键加载

  // 加载第一个
  String sql = "SELECT * FROM t_user WHERE id > ?";
  User user = session.loadFirst(User.class, sql, 88);

  // 分页查询
  String sql = "SELECT * FROM t_user WHERE id > ?";
  SqlParams params = new SqlParams(sql, new Object[] { 6 });
  params.setObjectClass(User.class);
  params.setFirstResult(3);
  params.setMaxResults(10);
  List users = session.list(params);

  // 查询单个属性
  String sql = "SELECT name FROM t_user WHERE id = 28";
  String name = session.queryUniqueObject(sql);

  // 查询属性列表
  String sql = "SELECT name FROM t_user WHERE id > ?";
  List names = session.list(String.class, sql, 200);


  String sql = "SELECT age FROM t_user WHERE age > 18";
  List ages = session.list(int.class, sql);

  4.存储过程
  final String pro = "{? = call hello_proc(?)}";
  String r = session.call(new ProcedureCaller() {
            
    public CallableStatement prepare() throws SQLException {
          CallableStatement cs = getSession().getConnection().prepareCall(pro);
          cs.setString(2, "World");
          cs.registerOutParameter(1, Types.CHAR);
          return cs;
     }
            
     public String callback(CallableStatement cs) throws SQLException {
          cs.execute();
          return cs.getString(1);
     }
  });

  5.事务处理
  session.clean(User.class);
  session.beginTransaction();
  try {
    User u = null;
    for(int i = 0; i < 1000; i++) {
        String sex = (i % 2 == 0 ? "男" : "女");
        u = new User(fixedStr(6), sex, randNumber(100), randString(16));
        session.save(u);
        if(i == 886) {
            Integer.parseInt("kkk");
        }
    }
    session.commit();
  } catch (Exception e) {
      session.rollback();
  } finally {
      session.endTransaction();
  }

这是一个完全基于JDBC的轻量java orm framework, 目标定位于使用方便,简单,后续会增加许多新的特性

下载地址:http://sourceforge.net/projects/javaclub/files/jorm/

 

Simple CRUD
http://www.oschina.net/code/snippet_151926_6316

处理特殊字段
http://www.oschina.net/code/snippet_151926_6355

处理多个Oracle存储过程返回的游标
http://www.oschina.net/code/snippet_151926_6356

批量操作
http://www.oschina.net/code/snippet_151926_6528

主键生成策略
http://www.oschina.net/code/snippet_151926_6531

 

  • Jorm 跟Hibernate的相似度非常高,它也是一个封装了JDBC的数据库对象持久化的框架。Jorm本身提供了annotation的组件引用,可以通过简单地标记实体对象的字段和类就可以实现Java对象与数据库对象的一一对应关系。通过Jorm的工具方法来实现数据库的持久化或查询操作,最重要的工具类文件是Jorm.java,其次是Session.java。眼见为实,下面来看一下程序实例。 1、数据

  • > 特点   1.支持多数据源管理和配置   2.自动封装Entity   3.支持事务   4.支持存储过程的方便调用   5.支持lazy加载   6.支持分页查询   7.支持多种数据库H2,MySQL,Oracle,PostgrSQL,SQLServer > 要求   1.JDK 1.5 or later   2.如需要lazy加载,需要引入cglib或javaassit,具体可配置 >

  • 关于Jorm的主键ID生成 > 引言   在Jorm中,主键的生成策略主要有AUTO、UUID、GUID、FOREIGN、SEQUENCE、INCREMENT、IDENTITY、ASSIGNED,下面分别来讲述这几种策略的应用场景 > GenerationType.AUTO   Jorm的默认主键策略,自动增长型,自增步长为1,适用数据类型int,long,如:   private int id

  •         在Jorm中使用最多的操作就是使用Session来实现对数据的CRUD操作,因为使用session才更符合JORM的设计编程的标准。在Hibernate中也是使用session来管理数据库操作的,这一点Jorm和Hibernate极为相似。我前几天就因为这个session的存储过程调用和函数调用而卡壳了,所以今天特别在这里写出,姑且记之于此,待来者阅览。 1、编写存储过程和函数 /

  •        Jrom使用JDBC式的Connection实现存储过程和函数的调用,这个问题是峰回路转的,前几天看了别人写的例子被误导了,一直纠结处理,今天通过Jorm原始的JDBC方式的存储过程调用实现了该功能,殊途同归,这就是许多持久化框架集成JDBC的最主要原因之一。 1、编写存储过程和函数 //存储过程 DROP PROCEDURE IF EXISTS count_has_

  • 在使用了 Mybatis 和 Spring JdbcTemplate 之后,还是决定自己写一个 ORM 框架。 Mybatis 的问题就是版本太多,配置太灵活,看不同人写的项目,就好像是不同的框架似的,而且还需要结合代码生成工具来使用,每次一修改表结构就要重新生成一遍 mapper 文件,自己写的 sql 必须要先备份,我知道应该有解决办法,但是不想继续在这条技术栈上投入精力了。 Spring J

相关阅读

相关文章

相关问答

相关文档