Cayenne,开源ORM盛宴中的另道佳肴,第1部分

何为 ORM

在正式介绍 Apache Cayenne 的功能之前,首先让我们先来看一下 ORM 是什么,我们为什么需要 ORM。大家知道,持久化(persistence)的目的是为了将内存中的数据或对象保存到存储设备上(如磁盘),其中主要的应用就是保存到关系型数据库,或其他类型的数据库中。而在一些大型的应用程序中,软件设计者都会设计一个持久化层来专门做这样的工作,包括持久化和反持久化(将磁盘上或者数据库中的数据反持久化到内存中)。而 ORM,即对象关系映射,就是数据持久化层的一项重要技术。有了它,软件设计和开发人员就可以更加关注业务逻辑,它会帮助将业务逻辑与数据库操作逻辑分离,实现系统的松耦合关系,从而使得开发人员从繁杂的与有关数据库操作的工作中解脱出来。可以说,一个健壮、优秀的 ORM 框架能够在为我们节省开发时间的同时,还能够提供高效,可靠的数据持久层代码。

为何 Apache Cayenne

首先,Cayenne 是一个完全开源的基于 Apache License 的数据持久化框架。除了具有一般 ORM 工具所具有的特性外,它还具有很多非常好的特性,比如可以将一个或多个模式数据库和 Java 对象绑定,可以对提交和回滚操作做原子化管理,可以对数据库表做逆向工程并生成 Java 代码,支持远程对象持久化等。 不仅如此,对于 DBA 所关心的性能问题,Cayenne 同样也有很好的支持,如 Cache 等等。而这些特性都可以通过它的一个非常易用的可视化工具 CayenneModeler 来配置完成。可以说,这降低了学习者的学习曲线,节省了开发时间。因此,我们将非常愿意通过本篇 Apache Cayenne 基础功能介绍和另一篇文章 Apache Cayenne 高级特性 向您介绍 Cayenne,如何使用 Cayenne,并希望在你学习过这两篇文章后,Cayenne 能够成为您开发企业应用数据库持久层框架中的一个选择。

配置环境和建模

工具下载

可以从 Apache Cayenne 网站上下载稳定版的 Cayenne2.0 安装包。开发工具,我们选择 Eclipse 3.4。因为 Cayenne 是一个数据持久层框架,所以我们还需要一个数据库。这里,我们选择同样开源的且轻量级的 Derby 数据库。

搭建环境

首先,在 Eclipse 中创建一个 Java 工程。然后,将运行 Cayenne 和 Derby 所需要的库文件放到 build path 中。

图 1. 导入 Cayenne 和 Derby 所需的 lib 文件

图 2. 将 lib 文件放到 build path 中

时间: 2024-08-02 19:23:35

Cayenne,开源ORM盛宴中的另道佳肴,第1部分的相关文章

Cayenne,开源ORM盛宴中的另道佳肴,第2部分

使用 Cayenne Remote Object Persistence(Cayenne ROP) ROP(Remote Object Persistence)远程对象持久化是 Cayenne 的一个独有特性,它通过使用 Web Service 技术提供了一种轻量级的远程对象持久化和查询功能.通过使用这一功能,客户端程序可以使用与访问本地数据库类似的 Cayenne API 来访问一个远程的数据库(远程数据库可以是任意的能够通过网络连接访问的数据库).图 1 是 Cayenne Remote O

开源 学习-怎样参与到一个开源的项目中去?

问题描述 怎样参与到一个开源的项目中去? 本人是一名大四的学生,最近没有特别多的课程了,所以时间比较多,希望能够参与到一个适当的开源项目中去,能够学习到更多的东西.但是我目前还不了解,应该怎样去参与一个开源的项目中,希望得到大家的指教,谢谢大家了! 解决方案 可以在网络上找相关的群体加入,一般都会流下邮件等信息,比如说你可以在git.oschina.net中查找

OEA ORM 框架中的冗余属性设计

OEA 框架提供了多种方式来优化分布式数据查询的性能,本篇将会说明如何以声明 OEA 冗余属性的方式,来实现轻量级的数据冗余,以减少关联查询次数及网络数据传输量,提高分布式应用程序性能.   冗余属性功能说明 OEA 冗余属性在框架层面提供了一种易用的机制,把指定冗余路径的关系对象中的属性值复制到本对象中,以解决关联查询.关联数据量等性能问题.应用开发人员只需要简单的定义一个冗余属性,而框架会自动完成对冗余属性的赋值.更新操作.   ORM 中的 N+1 问题示例 在进销存示例中,采购订单的列表

电脑中的有道词典在浏览器中无法使用划词取词功能如何解决

  1.首先打开电脑中安装的有道词典,右击任务栏中的图标,进入软件设置; 2.切换到"划词取词"选项卡,确认划词取词功能已开启,再进行尝试; 3.如果不行,在浏览器地址栏中将极速模式该为兼容模式,再看看能否使用; 4.若还是不能解决,则进入扩展中心; 5.搜索"词典浏览器取词"插件,然后点击安装即可.

Python的ORM框架中SQLAlchemy库的查询操作的教程_python

1. 返回列表和标量(Scalar) 前面我们注意到Query对象可以返回可迭代的值(iterator value),然后我们可以通过for in来查询.不过Query对象的all().one()以及first()方法将返回非迭代值(non-iterator value),比如说all()返回的是一个列表: >>> query = session.query(User).\ >>> filter(User.name.like('%ed')).order_by(User.

研究Python的ORM框架中的SQLAlchemy库的映射关系_python

前面介绍了关于用户账户的User表,但是现实生活中随着问题的复杂化数据库存储的数据不可能这么简单,让我们设想有另外一张表,这张表和User有联系,也能够被映射和查询,那么这张表可以存储关联某一账户的任意数量的电子邮件地址.这种联系在数据库理论中是典型的1-N (一对多)关系,用户表某一用户对应N条电子邮件记录. 之前我们的用户表称为users,现在我们再建立一张被称为addresses的表用于存储电子邮件地址,通过Declarative系统,我们可以直接用映射类Address来定义这张表: >>

开源BTS产品中存在多处漏洞,攻击者或可劫持手机通讯基站

前言 在过去的几周时间里,我从多个方面对GSM的安全性进行了调查和研究,例如GSM通信协议中存在的漏洞.除此之外,我还对目前世界上应用最为广泛的BTS软件进行了安全审计.在这篇文章中,我将会给大家介绍一下我在这款开源产品中所发现的多个漏洞,这些漏洞将允许攻击者入侵基站收发信台(BTS),并远程控制它的信号收发模块. 背景知识 一个基站收发信台(BTS)是由软件和无线电设备组成的,它是智能手机连接GSM.UMTS.以及LTE网络时必不可少的关键组件.BTS主要分为基带单元.载频单元和控制单元三部分

悠然乱弹:开源中国GIT中Java分类下TOP10项目的活动情况分析

TOP 10 ThinkGem / JeeSite 项目GIT情况统计 从上面看到,总共参与的贡献者有15个人,10个以上提交者有3个,最近1个月一个提交也没有.默认分支文件总数有5490. 从这里可以看出,项目规模比较大.总共的提交数是243个,说明整体活动情况还不错,但是现在的活动性在下降. Issues总数:18个,打开数:10个,已关闭8个. 项目最近提交情况 最近的提交是1个月前了. TOP 9 oschina / search-framework 项目GIT情况统计 从上面看到,总共

在年中的电商促销盛宴中,奥克斯空调的整体销售再次出现井喷

销售额达到惊人的5000万元,以单品排名来看稳居行业前两强.仅在天猫商城的奥克斯自营旗舰店和授权专卖店的销售额,就达到1000万元,在空调品类中销量排名第一.[图:奥克斯空调获得五星评论]网友"静水深流"在评论中说:"618大促买的,20号就到货了,22号上门安装好的.首先,空调非常好,外形靓丽,制冷迅速,声音安静,很满意.其次,价格很实惠了,比永乐电器城里便宜很多,很划算.再次,物流很给力,服务很到位,送货到楼下后,2位师傅二话不说,直接帮我抬到楼上.安装师傅也很热情,态度