ORM软件清单

From Wikipedia, the free encyclopedia

This is a list of well-known object-relational mapping software. It is not up-to-date or all-inclusive.

Contents

C++

NameOpen sourceLicenseFramework-specificQt supportBoost supportMySQL supportPostgreSQL supportSQLite supportXML supportOracle supportMSSQL Server supportODBC supportIBM DB2 support
LiteSQL YesBSDno Yes  Yes Yes Yes     
ODB YesGPL/otherno Yes Yes Yes Yes Yes  Yes   
QDjango YesLGPLyes, Qt Yes Yes Yes Yes Yes     
QxOrm YesLGPLyes, Qt Yes Yes Yes Yes Yes  Yes Yes Yes Yes
Wt::Dbo YesGPL / commercialyes, Wt No Yes Yes Yes Yes No No No No No

Flex

Java

Groovy

.NET

Object Pascal (Delphi)

Objective-C, Cocoa

  • Core Data, object graph management framework with several persistent stores, ships with Mac OS X and iOS

Perl

PHP

  • CakePHP, ORM and framework for PHP 5, open source (scalars, arrays, objects); based on database introspection, no class extending
  • CodeIgniter, framework that includes an ActiveRecord implementation
  • MVC MED, open source MVC with basic functions integrated, and a mapping classes generator from a MySQL database.
  • Doctrine, open source ORM for PHP 5.2.3, 5.3.X. Free software (GNU LGPL)
  • PdoMap, open source ORM for PHP 5.x, inspired by Hibernate, free software (GNU LGPL)
  • Eloquent ORM, ORM bundled with the Laravel PHP micro framework
  • Kohana, framework that includes an ActiveRecord implementation
  • Propel, ORM and query-toolkit for PHP 5, inspired byApache Torque, free software, MIT
  • Rocks, open source ORM for PHP 5.1 plus, free for non-commercial use, GPL
  • Qcodo, ORM and framework for PHP 5, open source
  • Redbean, ORM layer for PHP 5, creates and maintains tables on the fly, open source, BSD
  • Torpor, open source ORM for PHP 5.1 plus, free software, MIT, database and OS agnostic
  • Yii, ORM and framework for PHP 5, released under the BSD license. Based on the ActiveRecord pattern.
  • FuelPHP, ORM and framework for PHP 5.3, released under the MIT license. Based on the ActiveRecord pattern.
  • Zend Framework, framework that includes a table data gateway and row data gateway implementations.

Python

  • Dejavu, Open Source thread-safe Object-Relational Mapper for Python applications
  • Django, ORM included in Django framework, open source
  • SQLAlchemy, open source
  • SQLObject, open source
  • Storm, open source (LGPL 2.1) developed atCanonical Ltd.
  • Tryton, open source
  • web2py, ORM named DAL is included in web2py framework, open source

Ruby

Smalltalk

  • TOPLink/Smalltalk, by Oracle, the Smalltalk predecessor of the Java version of TOPLink

Visual Basic 6.0

See also


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一款全新的ORM软件(仅依赖一个jar: gson): 如果你觉得hibernate难以驾驭,或许该软件正是你所想要的 如果你觉得mybatis成堆的xml/mapper太繁琐,或许该软件正是你所想要的 如果你觉得现有的ORM软件总有那么些不太满意的地方,或许该软件有你所想要的 如果你觉得将SQL的查询结果映射成Map使用起来不太方便,该软件能帮你自动产生class 如果你觉得配置型SQL语法书写起来不太方便,该软件借用JSP编辑器来书写SQL, IDE能帮助你实现代码提示 如果你想尝试下新的ORM软件, 欢迎来使用! 5分钟演示视频     参考:例子工程 一行代码引入数据库: @DB(url="jdbc:mysql://127.0.0.1:3306/test" ,username="root", password="root") 一些基本的数据库操作: //insert new User().setName("zzg.zhou").setStatus(1).save(); //parse data from type: Map, json/xml string, JsonObject(Gson) //, HttpServletRequest, JavaBean new User().parse("{'name':'oschina','status':0}").save(); new User().parse("<data> <name>china01</name><status>1</status> </data>").save(); //select User.SELECT().selectByPrimaryKey(1); //SQL: SELECT * FROM `user` WHERE `name` = 'zzg.zhou' User.SELECT().selectOne("name=?", "zzg.zhou"); //SQL: SELECT `name`, `status` FROM `user` User.SELECT().include("name","status").select();   Page<User> page=User.WHERE().name.like("zzg%").status.in(1,2,3) .SELECT().selectPage(10,0); System.out.println(page.getTotalRow()); //SQL: SELECT * FROM `user` WHERE `name` like 'zzg%' AND `status` IN(0, 1) for(User x:User.WHERE().name.like("zzg%").status.in(0, 1).SELECT().select()){ System.out.println(x); } //SQL: SELECT * FROM `user` WHERE (`name` like 'zzg%' AND `status` >= 0)  //                             OR (`name` = 'zzg' AND `status` > 1) // ORDER BY `status` ASC  for(User x:User.WHERE() .name.like("zzg%").status.ge(0) .OR() .name.eq("zzg").status.gt(1) .status.asc() .SELECT().select()){ //SELECT / delete / update System.out.println(x); }   //general query TestDB.DB.select("SELECT * FROM user WHERE name like ?","zzg%"); TestDB.DB.createQuery().add("SELECT * FROM user WHERE name like ?","zzg%") .getList(User.class);   Query q=new Query(TestDB.DB); DataTable<DataMap> rs=q.add("SELECT * FROM user WHERE name like ?","zzg%")  .add(" AND status ").in(1,2,3)  .getList(); for(User x:rs.as(User.class)){ System.out.println(x); } //DataTable query //SQL: SELECT name, count(*) as cnt FROM _THIS_TABLE // WHERE status>=0 GROUP BY name ORDER BY name ASC DataTable<DataMap> newTable= rs.select("name, count(*) as cnt","status>=0","name ASC","GROUP BY name"); //update User user=User.SELECT().selectOne("name=?", "zzg.zhou"); user.setStatus(3).update(); User updateTo=new User().setName("tsc9526"); User.WHERE().name.like("zzg%").update(updateTo); //transaction Tx.execute(new Tx.Atom() { public int execute() { new User().setName("name001").setStatus(1).save(); new User().setName("name002").setStatus(2).save(); //... other database operation return 0; } });   //Dynamic model: Record Record r=new Record("user").use(TestDB.DB); r.set("name", "jjyy").set("status",1)  .save(); //SQL: SELECT * FROM `user` WHERE (`name` like 'jjyy%' AND `status` >= 0) //                             OR (`name` = 'zzg' AND `status` > 1) // ORDER BY `status` ASC  for(Record x:r.WHERE() .field("name").like("jjyy%").field("status").ge(0) .OR() .field("name").eq("zzg").field("status").gt(1) .field("status").asc() .SELECT().select()){ System.out.println(x); }  //SQL: DELETE FROM `user` WHERE `name` like 'jjyy%' AND `status` >= 0 r.WHERE()  .field("name").like("jjyy%").field("status").ge(0)  .delete();   //delete user.delete(); //SQL: DELETE FROM `user` WHERE `name`='china01' User.WHERE().name.eq("china01").delete(); //User.DELETE().deleteAll();   SQL查询自动产生结果类: /** * 数据访问类 */ public class UserBlogDao { final static long $VERSION$= 18L; //!!! 版本号, 每次保存为自动 1 //@Select 注解指示该方法需自动生成结果类 //默认类名: Result 方法名, 默认包名:数据访问类的包名 "." 数据访问类的名称(小写) //可选参数:name 指定生成结果类的名称 @Select(name="test.result.UserBlogs") //!!! 保存后会自动修改该函数的返回值为: List -> List<UserBlogs> //第一次编写时,由于结果类还不存在, 为了保证能够编译正常, //函数的返回值 和 查询结果要用 泛值 替代, 保存后,插件会自动修改. //函数的返回值 和 查询结果 泛值的对应关系分三类如下: //1. List查询 //public DataTable method_name(...){... return Query.getList(); } 或 //public List method_name(...){... return Query.getList(); } // //2. Page查询 //public Page method_name(...){... return Query.Page(); } // //3. 单条记录 //public Object method_name(...){... return Query.getResult(); } // public List selectUserBlogs(int user_id){ Query q=TestDB.DB.createQuery(); q.add(""/**~{ SELECT a.id,a.name,b.title, b.content,b.create_time FROM user a, blog b WHERE a.id=b.user_id AND a.id=? }*/, user_id); //!!! 保存后会自动修改 查询结果为: getList() -> getList<UserBlogs.class> return q.getList(); } @Select //自动产生结果类: test.dao.userblogdao.ResultSelectUserBlogsOne public Object selectUserBlogsOne(int user_id){ Query q=TestDB.DB.createQuery(); q.add(""/**~{ SELECT a.id,a.name,b.title, b.content,b.create_time FROM user a, blog b WHERE a.id=b.user_id AND a.id=? }*/, user_id); return q.getResult(); } } Eclipse 插件使用效果:(插件下载) 1. 支持Java多行字符串编辑: 2. 自动生成模型类: 3. 动态SQL自动产生结果类 更多用法参考:https://github.com/11039850/monalisa-orm/wiki maven坐标: <dependency> <groupId>com.tsc9526</groupId> <artifactId>monalisa-orm</artifactId> <version>1.7.0</version> </dependency> 备注: 目前只实现了Mysql接口,其它类型的数据库后续补上 标签:monalisa

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值