如何扩展JPA Annotation以更好的支持OR Mapping

JPA 和 OpenJPA 简介

随着面向对象的数据模型被广泛应用,将面向对象的实体映射为关系数据库表项(OR Mapping)已经越来越多的出现在各类应用程序的开发设计之中。JPA(Java Persistence API)是 Sun Microssystems 公司制定的一个把 Java 数据对象映射成关系数据库对象的一 个标准。JPA 弥补了 JDBC、ORM、EJB2 等在 Java 对象持久化方面的不足之处,并且非常易 于使用。JPA 因大量使用了像 annotations 和 generics 等 Java 语言的新特性,需要 J2SE 1.5(也被称作 Java 5)或者更高版本的支持。Apache 的 OpenJPA 则是当前诸多热门 Java 持久化实现之一。Apache OpenJPA 是 Apache 软件基金下面的一个 Java 持久化技术 ,它可以被当作一个单独的 POJO(Plain Old Java Object)持续化使用,或者被集成到任 意 Java EE 兼容的容器或其它的轻量级框架(例如 Tomcat、Spring)等一起使用。

标准 JPA annotation 及其在 OpenJPA 中的应用

标准 JPA 提供了不少 annotation,在 OpenJPA 中这些标准的 annotation 的用法如下 :

@entity

@entity 用来声明一个类为一个持久化的实体类。该 annotation 只有唯一可选的属性, 即 name 用于指定实体的名称。

@table

@table 描述了一个实体类对应的数据库表的信息。@table 有以下属性:

String name: 表的名称。

String schema: 该表对应的 schema,如果没有指定 schema 的名称,JPA 在数据库连接 时使用默认的 schema。

String catalog: 表的目录。如果没有指定目录,JPA 在数据库连接时使用默认值。

UniqueContraint[] uniqueContraints: 应用于表的唯一性限制条件。Uniquecontraint 本身是个 annotation, 用于保证数据库表的某一列(简单数据类型或者复杂数据类型)在每 一个记录中都是唯一的。

@column

@column 定义了数据库表项的每一列的属性,具体内容包括:

String name: 指定列的名称,默认值为类的 field 名称。

String columnDefinition: 数据库系统特定的列类型名称。在 OpenJPA 中,该属性只适 用于数据库系统通过那些能够从元数据直接创建表的数据库系统。在表的创建过程中,如果 该属性值非空,那么数据库系统就以该属性指定的类型来定义指定的列。

int length:指定列的长度。

int precision:小数列的精度。

int scale:定义小数类型的列最多可以容纳的数字数目

boolean nullable: 该列是否能够接受非空的记录。

boolean insertable:定义该列是否可以通过 SQL INSERT 语句中指定生成,默认值为 true。

boolean updatable:定义该列是否可以通过 SQL UPDATE 语句中生成,默认值为 true。

String table:有的时候列并非定义在主表下,table 属性就提供了将列映射到次表下的 方法。

@ Inheritance

时间: 2024-10-31 16:15:52

如何扩展JPA Annotation以更好的支持OR Mapping的相关文章

sharepoint 2010扩展调查字段属性(2) 增加图片支持

除了扩展图片评选功能,还可以扩展多一个评论功能,如下图: 只需要在原来的基础上sharepoint 2010 扩展调查字段属性(1)-增加图片支持,创建多一个叫评论的问题,选择TxtForSurvey问题类型,如下图: 配置完成后,点击完成.就可以实现在评选的时候,允许添加评论. 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/web/sharepoint/

传iPad mini比iPad更薄 首批支持3G

7月10日消息,据国外媒体报道,消息人士透露,苹果即将推出的7.85英寸iPadmini厚度仅为7.2毫米,比新iPad薄近25%.传iPad mini比iPad更薄 首批支持3G(图片来自互联网)消息来源称,iPad mini机身厚度仅为7.2毫米,这将是有史以来最薄的iPad.这款产品更像是放大版的iPodnano,而不是缩小版的iPad,其原型机与第3代iPod nano类似.这意味着iPad mini可能采用与iPad不同的设计,这有助于避免iPad mini对iPad的销售产生冲击.此

Robots协议:是君子协议也是契约精神,更需法律支持

Robots协议:是君子协议也是契约精神,更需法律支持 阿祥 10月16日,北京市第一中级人民法院开庭,审理奇虎360搜索违反"Robots协议".侵犯百度权益一案.此案涉嫌违反robots协议.破坏行业规则,引起行业.媒体以及法律人士的高度关注. 所谓Robots协议,即爬虫协议,亦称机器人协议.1994年6月30日,在经过搜索引擎人员以及被搜索引擎抓取的网站站长共同讨论后,正式发布了一份行业规范,即robots.txt协议.这一协议确立了两个原则:其一.搜索技术应服务于人类,同时尊

向外扩展SQL Server实现更高扩展性

本文说明向外扩展数据库系统的两个选项,从而实现更高的可扩展性:水平数据划分和垂直数据划分. 当我提到向外扩展数据库系统时,我实际上只是讨论对数据库系统进行分割或划分,以便你能利用那些部分,把它们分配到单独的数据库服务器上.这允许你在许多服务器间分散处理能力,以适应不断扩张的增长. 但是,额外的特性和功能需要更高的复杂程度.一个向外扩展的数据库很难进行设计或管理.在你成功对一个数据库系统实行向外扩展之前,你必须解决许多困难的商业和技术难题. 本文说明向外扩展数据库系统的两个选项,从而实现更高的可扩

微软宣布它将扩展对Web发布标准RSS 的支持

RSS 主要被新闻发布者和博客用于通知订户新信息的发布,它还被播客用来通知听众有了新的音频内容. 微软正在制订对RSS 的一种扩展,使它能够更好地支持有顺序的信息列表.目前,RSS feeds 仅仅被作为一种信息流被发送和读取,排列顺序是信息被发送的时间. 微软正在制订一种添加顺序信息的方式,使RSS feed能够更好地处理电子商务网站的畅销商品列表或根据事件日期而非约会创建时间排序的日程表信息等内容.在于本周三晚些时候发布的一张帖子中,颇有影响的博客先驱戴夫说,这些内容都不是 RSS 过去所承

Visual Studio 2015 for Linux更好地支持Linux下的开发

Visual C++ for Linux扩展使Visual Studio 2015的用户可以在VS2015中编写C或者C++代码,并将代码部署到基于Linux的系统中去编译和调试.源代码和项目文件通过SSH传输到远程机上,程序的输出将显示在Visual Studio上. Microsoft的Marc Goodner分享了更多有关新版本(1.0.5)的发布细节,据他所述,新版本在以下的几个领域中提供了新的功能:makefile项目模板.远程源复制管理.可重写的C/C++编译器路径以及新的调试选项.

苹果iPad2 3月2日见新品或降价10%;更轻薄;支持数字钱包

国外媒体消息:美国时间周三,由苹果公司开发的iPad2就要发布.无论是在价格,还是配置上,苹果iPad2都给竞争对手心脏一记重拳.<华尔街日报>独家消息,iPad2定于3月2日公布.过去几天,媒体报道过,股神巴菲特的手痒了,现在,全世界的苹果迷也要手痒了. CNN说,高盛分析师预测,新品降价10%. 不过美国博客网站Businessinsider说,iPad 2只是一款过渡产品,iPad 3将于今秋上市.乔布斯将缺席新品发布会,取代他的很有可能是苹果营销副总裁Phil Schiller.以下为

佳驰软件董事长:餐饮企业玩转o2o更需系统支持

中介交易 SEO诊断 淘宝客 云主机 技术大厅 最新权威数据显示,2013年中国餐饮o2o市场规模已达到622.8亿,预计到2015年中国餐饮o2o市场规模将达到1200亿左右. 餐饮行业作为o2o最先爆发的市场,可以说餐饮o2o是o2o的第一站.而不少业内人士认为移动搜索较适合做餐饮o2o,用户流量都不缺,也适合去为用户从杂乱无比的餐饮服务商中找到合适自己的消费目标.移动互联网的迅速普及,手机成为国民第一大上网终端.出门一天的生活,可以不带钱包,但一定会带手机,如果没有手机,就感觉浑身不自在,

Oracle 计划升级 JVM 以更好地支持多核处理器

Infoworld 消息,Oracle 正计划对 Java 虚拟机进行更新,以支持 direct-value class types ,而这也正是现代多核处理器所需的服务.不过目前尚未有具体的更新时间表. Oracle Java 平台组软件开发副总裁 Georges Saab 表示:"在 Java 中支持 value types 的提案是为了让开发者放弃 identity 或 polymorphism ,以便运行时可以以更小巧的方式表现底层数据,更适合大批量操作的处理." Saab 还