如何扩展JPA Annotation以更好的支持OR Mapping - 编程入门网
如何扩展JPA Annotation以更好的支持OR Mapping时间:2011-04-19 IBM 周蕾蕾 胡光辉 赵 成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 如何扩展JPA Annotation以更好的支持OR Mapping(2)时间:2011-04-19 IBM 周蕾蕾 胡光辉 赵 成在面向对象的类之间存在继承关系,@inheritance 的出现就将继承关系能够映射到关系 数据库模型中。在实体基类中定义继承策略 InheritanceType stragegy:用以声明继承策略的枚举类型,可取的值包括 SINGLE_TABLE,JOINED 和 TABLE_PER_CLASS: InheritanceType.SINGLE_TABLE:把所有的子类及其父类都映射到同一张表中。 InheritanceType.JOINED: 类图中每个类都映射到各自的表项,但是每张表中仅仅包含 在各个层次的类中定义的列。 Inheritance.TABLE_PER_CLASS:类图中每个类都映射到各自的表现,和 JOINED 不同之 处在于每张表包含了对应的实体类所有的列。 清单 1. JPA annotation 使用范例
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |