- 浏览: 220900 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (105)
- java (30)
- linux unix (19)
- 版本控制 (15)
- ajax (2)
- 开发工具及辅助工具 (3)
- database (2)
- flex (10)
- 其它 (2)
- windows (1)
- 开源企业应用 (6)
- 开源erp (4)
- 开源cms (0)
- 开源门户 (0)
- php (1)
- ofbiz&opentaps (4)
- 运维管理 (0)
- MOQUI (3)
- linux unix mysql (0)
- mysql (2)
- hadoop (3)
- android (0)
- 微信公众号 (1)
- java cassandra nosql (0)
- Nosql (1)
- socket (1)
- tcp (1)
- udp (1)
- 十六进制 (1)
- ofbiz (1)
- docker (1)
- 虚拟化 (0)
- 分布式 (0)
最新评论
-
w87848608:
用phpunit --coverage-html命令一样出现了 ...
关于phpunit与Selenium取coverage的配置(原创) -
surpass_li:
好久没来这了,不好意思,你参照Deploying OFBiz ...
ofibz10.04部署到 jboss5.1.0成功 -
tide2046:
求部署文档。谢谢。
ofibz10.04部署到 jboss5.1.0成功 -
Romotc:
征文 +1,1楼的方法还是有点问题。
eclipse编译时过滤SVN版本控制信息方法 -
我改名了:
谢谢,收 藏 了,备用。
Java获取客户端真实IP地址的两种方法(转)
1 JPA 批注参考
版本 : 5/12/06
作为 Java 企业版 5 (Java EE 5) Enterprise Java Bean (EJB) 3.0 规范的组成部分,Java 持续性 API (JPA) 显著简化了 EJB 持续性并提供了一个对象关系映射方法,该方法使您可以采用声明方式定义如何通过一种标准的可移植方式(在 Java EE 5 应用服务器内部以及 Java 标准版 (Java SE) 5 应用程序中的 EJB 容器外部均可使用)将 Java 对象映射到关系数据库表。
在 JPA 之前,Java EE 应用程序将持续类表示为容器管理的实体 bean。使用 JPA,您可以将任何普通的旧式 Java 对象 (POJO) 类指定为 JPA 实体:一个应使用 JPA 持续性提供程序的服务将其非临时字段持久保存到关系数据库(在 Java EE EJB 容器的内部或在简单 Java SE 应用程序中的 EJB 容器的外部)的 Java 对象。
使用 JPA 时,可以使用批注配置实体的 JPA 行为。批注是一种使用元数据修饰 Java 源代码的简单表达方法,它编译为相应的 Java 类文件,以便在运行时由 JPA 持续性提供程序解释以管理 JPA 行为。
例如,要将 Java 类指定为 JPA 实体,请使用 @Entity 批注,如下所示:
@Entity public class Employee implements Serializable { ... }
您可以有选择地使用批注来修饰实体类以覆盖默认值。这称作按异常进行配置 (configuration by exception)。
本参考广泛引用了 JSR-220 Enterprise JavaBean 版本 3.0 Java 持续性 API 规范,以按类别汇总批注信息(请参阅表 1-1 ),并解释了何时以及如何使用这些批注来自定义 JPA 行为,以满足应用程序的需要。
有关详细信息,请参阅:
表 1-1 按类别划分的 JPA 批注
实体 |
默认情况下,JPA 持续性提供程序假设 Java 类是非持续类,并且仅当使用此批注对其进行修饰的情况下才可用于 JPA 服务。 使用此批注将普通的旧式 Java 对象 (POJO) 类指定为实体,以便可以将它用于 JPA 服务。 要将类用于 JPA 服务,必须将该类指定为 JPA 实体(使用此批注或 |
|
数据库模式属性 |
默认情况下,JPA 持续性提供程序假设实体名称对应于同名的数据库表,且实体的数据成员名称对应于同名的数据库列。 使用这些批注覆盖此默认行为,并微调对象模型与数据模型之间的关系。 |
|
身份 |
默认情况下,JPA 持续性提供程序假设每个实体必须至少有一个用作主键的字段或属性。 使用这些批注指定以下项之一:
还可以使用这些批注微调数据库维护实体身份的方式。 |
|
直接映射 |
默认情况下,JPA 持续性提供程序为大多数 Java 基元类型、基元类型的包装程序以及 使用这些批注微调数据库实现这些映射的方式。 |
|
关系映射 |
JPA 持续性提供程序要求您显式映射关系。 使用这些批注指定实体关系的类型和特征,以微调数据库实现这些关系的方式。 |
|
组合 |
默认情况下,JPA 持续性提供程序假设每个实体均映射到它自己的表。 使用这些批注覆盖其他实体拥有的此种实体行为。 |
|
继承 |
默认情况下,JPA 持续性提供程序假设所有持久字段均由一个实体类定义。 如果实体类继承了一个或多个超类中的某些或所有持续字段,则使用这些批注。 |
|
锁定 |
默认情况下,JPA 持续性提供程序假设应用程序负责数据一致性。 使用此批注启用 JPA 管理的乐观锁定(推荐使用)。 |
|
生命周期回调事件 |
默认情况下,JPA 持续性提供程序处理所有持续性操作。 如果您要在实体生命周期内随时调用自定义逻辑,请使用这些批注将实体方法与 JPA 生命周期事件关联。图 1-1 演示了这些生命周期事件之间的关系。 |
|
实体管理器 |
在使用 JPA 持续性提供程序的应用程序中,您可以使用 使用这些批注将实体与实体管理器关联并自定义实体管理器的环境。 |
|
查询 |
在使用 JPA 持续性提供程序的应用程序中,可以使用实体管理器动态创建和执行查询,也可以预定义查询并在运行时按名称执行它们。 使用这些批注预定义查询并管理它们的结果集。 |
|
@AssociationOverride
默认情况下,JPA 持续性提供程序自动假设子类继承超类中定义的持久属性及其关联映射。
如果继承的列定义对实体不正确(例如,如果继承的列名与已经存在的数据模型不兼容或作为数据库中的列名无效),请使用
@AssociationOverride
批注自定义从 @MappedSuperclass
或 @Embeddable
继承的 @OneToOne
或 @ManyToOne
映射,以更改与字段或属性关联的 @JoinColumn
。
如果有多个要进行的 @AssociationOverride
更改,则必须使用 @AssociationOverrides
。
要自定义基本映射以更改它的 @Column ,请使用 @AttributeOverride 。
表 1-4 列出了此批注的属性。有关更多详细信息,请参阅 。有关更多详细信息,请参阅 API 。
表 1-2 @AssociationOverride 属性
|
|
要指定映射到持久属性的连接列,请将 映射类型将与可嵌套类或映射的超类中定义的类型相同。 |
|
|
如果使用了基于属性的访问,则映射的为嵌入对象中的属性名称,如果使用了基于字段的访问,则映射的为字段名称。 |
示例
1-4
显示了示例
1-5
中的实体扩展的 @MappedSuperclass
。示例
1-5
显示了如何在实体子类中使用 @AssociationOverride
覆盖 @MappedSuperclass
Employee
中定义(默认情况下)的 @JoinColumn
以便关联到 Address
。
如果使用 @AssociationOverride
,则 Employee
表包含以下列:
-
ID
-
VERSION
-
ADDR_ID
-
WAGE
如果不使用 @AssociationOverride
,则
Employee
表包含以下列:
-
ID
-
VERSION
-
ADDRESS
-
WAGE
@AssociationOverrides
如果需要指定多个 @AssociationOverride
,则必需使用一个
@AssociationOverrides
批注指定所有关联覆盖。
表 1-5 列出了此批注的属性。有关更多详细信息,请参阅 。有关更多详细信息,请参阅 API 。
表 1-3 @AssociationOverrides 属性
|
|
要指定两个或更多覆盖,请将 |
示例 1-6 显示了如何使用此批注指定两个关联覆盖。
示例 1-3 @AssociationOverrides
@Entity @AssociationOverrides({ @AssociationOverride(name="address", joinColumn=@Column(name="ADDR_ID")), @AssociationOverride(name="id", joinColumn=@Column(name="PTID")) }) public class PartTimeEmployee extends Employee { @Column(name="WAGE") protected Float hourlyWage; ... }
@AttributeOverride
默认情况下,JPA 持续性提供程序自动假设子类继承超类中定义的持久属性及其基本映射。
如果针对实体继承的列定义不正确,请使用 @AttributeOverride
批注自定义一个从 @MappedSuperclass
或 @Embeddable
继承的基本映射以更改与字段或属性关联的 @Column
。(例如,如果继承的列名与事先存在的数据模型不兼容,或者作为数据库中的列名无效)。
如果有多个要进行的 @AttributeOverride
更改,则必须使用 @AttributeOverrides
。
要自定义关联映射以更改它的 @JoinColumn ,请使用 @AssociationOverride 。
表 1-4 列出了此批注的属性。有关更多详细信息,请参阅 。有关更多详细信息,请参阅 API 。
表 1-4 @AttributeOverride 属性
|
|
映射到持久属性的 @Column 。映射类型将与可嵌套类或映射超类中定义的类型相同。 |
|
|
如果使用了基于属性的访问,则映射的为嵌入对象中的属性名称,如果使用了基于字段的访问,则映射的为字段名称。 |
示例
1-4
显示了示例
1-5
中的实体扩展的 @MappedSuperclass
。示例
1-5
显示了如何使用实体子类中的 @AttributeOverride
覆盖 @MappedSuperclass
Employee
中定义(默认情况下)的 @Column
,以便基本映射到
Address
。
如果使用 @AttributeOverride
,则 Employee
表包含以下列:
-
ID
-
VERSION
-
ADDR
_STRING -
WAGE
如果不使用 @AttributeOverride
,则 Employee
表包含以下列:
-
ID
-
VERSION
-
ADDRESS
-
WAGE
@AttributeOverrides
如果需要指定多个 @AttributeOverride
,则必需使用一个
@AttributeOverrides
批注指定所有属性覆盖。
表 1-5 列出了此批注的属性。有关更多详细信息,请参阅 。有关更多详细信息,请参阅 API 。
表 1-5 @AttributeOverrides 属性
|
|
要指定两个或更多属性覆盖,请将 |
示例 1-6 显示了如何使用此批注指定两个属性覆盖。
示例 1-6 @AttributeOverrides
@Entity @AttributeOverrides({ @AttributeOverride(name="address", column=@Column(name="ADDR_ID")), @AttributeOverride(name="id", column=@Column(name="PTID")) }) public class PartTimeEmployee extends Employee { @Column(name="WAGE") protected Float hourlyWage; public PartTimeEmployee() { ... } public Float getHourlyWage() { ... } public void setHourlyWage(Float wage) { ... } }
@Basic
默认情况下,JPA 持续性提供程序为大多数 Java 基元类型、基元类型的包装程序以及枚举自动配置一个 @Basic
映射。
使用 @Basic
批注:
-
将获取类型配置为
LAZY
-
如果空值不适合于应用程序,则将映射配置为禁止空值(针对非基元类型)
表 1-6 列出了此批注的属性。有关更多详细信息,请参阅 。有关更多详细信息,请参阅 API 。
表 1-6 @Basic 属性
|
|
默认值
: 默认情况下,JPA 持续性提供程序使用获取类型
如果这不适合于应用程序或特定的持久字段,请将 |
|
|
默认值
: 默认情况下,JPA 持续性提供程序假设所有(非基元)字段和属性的值可以为空。 如果这并不适合于您的应用程序,请将 |
示例
1-7
显示了如何使用此批注为基本映射指定获取类型 LAZY
。
@Column
默认情况下,JPA 持续性提供程序假设每个实体的持久字段存储在其名称与持久字段的名称相匹配的数据库表列中。
使用 @Column
批注:
-
将持久字段与其他名称关联(如果默认列名难于处理、与事先存在的数据模型不兼容或作为数据库中的列名无效)
-
将持久字段与辅助表中的列关联(请参阅 @SecondaryTable )
-
微调数据库中列的特征
表 1-7 列出了此批注的属性。有关更多详细信息,请参阅 。有关更多详细信息,请参阅 API 。
表 1-7 @Column 属性
|
|
默认值
:空 默认情况下,JPA 使用最少量 SQL 创建一个数据库表列。 如果需要使用更多指定选项创建的列,请将 注意 :捕获批注中的 DDL 信息时,某些 JPA 持续性提供程序可以在生成数据库模式时使用此 DDL。例如,请参阅“用于 Java2DB 模式生成的 TopLink JPA 扩展” 。 |
|
|
默认值
: 默认情况下,JPA 持续性提供程序假设所有列始终包含在 如果该列不应包含在这些语句中,请将 |
|
|
默认值 : 255 默认情况下,JPA 持续性提供程序假设所有列在用于保存 如果该列不适合于您的应用程序或数据库,请将 |
|
|
默认值 :JPA 持续性提供程序假设实体的每个持久字段都存储在其名称与持久字段或属性的名称相匹配的数据库表列中。 要指定其他列名,请将 |
|
|
默认值
: 默认情况下,JPA 持续性提供程序假设允许所有列包含空值。 如果不允许该列包含空值,请将 |
|
|
默认值 : 0. 默认情况下,JPA 持续性提供程序假设所有列在用于保存十进制(精确数字)值时的精度为 0。 如果该精度不适合于您的应用程序或数据库,请将 |
|
|
默认值 : 0. 默认情况下,JPA 持续性提供程序假设所有列在用于保存十进制(精确数字)值时的伸缩度为 0。 如果该伸缩度不适合于您的应用程序或数据库,请将 |
|
|
默认值 :JPA 持续性提供程序假设实体的所有持久字段都存储到一个其名称为实体名称的数据库表中(请参阅 @Table )。 如果该列与辅助表关联(请参阅 @SecondaryTable
),请将
|
|
|
默认值
: 默认情况下,JPA 持续性提供程序假设允许所有列包含重复值。 如果不允许该列包含重复值,请将 |
|
|
默认值
: 默认情况下,JPA 持续性提供程序假设列始终包含在 如果该列不应包含在这些语句中,请将 |
示例
1-8
显示了如何使用此批注使 JPA 将 empId
持久保存到辅助表 EMP_HR
中的列
EMP_NUM
。默认情况下,JPA 将 empName
持久保存到主表
Employee
中的列 empName
。
@ColumnResult
执行 @NamedNativeQuery 时,它可以返回实体(包括不同类型的实体)、标量值或实体和标量值的组合。
使用 @ColumnResult
批注返回标量值。标量类型由您在 @ColumnResult
中标识的列类型确定。
有关详细信息,另请参阅 @EntityResult 、@FieldResult 和 @SqlResultSetMapping 。
表 1-8 列出了此批注的属性。有关更多详细信息,请参阅 。有关更多详细信息,请参阅 API 。
表 1-8 @ColumnResult 属性
|
|
在原生 SQL 查询的 |
示例
1-9
显示了如何使用此批注将 Item
(请参阅示例
1-10
)标量 name
包含在结果列表(请参阅示例
1-11
)中。在该示例中,结果列表将为 Object
数组的
List
,如:{[Order, "Shoes"], [Order, "Socks"], ...}
。
示例 1-9 使用 @ColumnResult 的 Order 实体
@SqlResultSetMapping( name="OrderResults", entities={ @EntityResult( entityClass=Order.class, fields={ @FieldResult(name="id", column="order_id"), @FieldResult(name="quantity", column="order_quantity"), @FieldResult(name="item", column="order_item") } ) }, columns={ @ColumnResult( name="item_name" ) } ) @Entity public class Order { @Id protected int id; protected long quantity; protected Item item; ... }
示例 1-11 结合使用 @SqlResultSetMapping 与 @ColumnResult 的原生查询
Query q = entityManager.createNativeQuery( "SELECT o.id AS order_id, " + "o.quantity AS order_quantity, " + "o.item AS order_item, " + "i.name AS item_name, " + "FROM Order o, Item i " + "WHERE (order_quantity > 25) AND (order_item = i.id)", "OrderResults" ); List resultList = q.getResultList(); // List of Object arrays:{[Order, "Shoes"], [Order, "Socks"], ...}
@DiscriminatorColumn
默认情况下,当 @Inheritance
属性策略为 InheritanceType.SINGLE_TABLE
或 JOINED
时,JPA
持续性提供程序将创建一个名为 DTYPE
的标识符列以区分继承层次中的类。
使用 @DiscriminatorColumn
批注:
-
指定一个标识符列名(如果数据模型中的列名不是默认列名
DTYPE
)。 -
指定一个适用于应用程序或事先存在的数据模型的标识符列长度
-
微调数据库中的标识符列的特征
表 1-9 列出了此批注的属性。有关更多详细信息,请参阅 。有关更多详细信息,请参阅 API 。
表 1-9 @DiscriminatorColumn 属性
|
|
默认值
:空 默认情况下,JPA 持续性提供程序使用最少量 SQL 创建一个数据库表列。 如果需要使用更多指定选项创建的列,请将 |
|
|
默认值
: 默认情况下,JPA 持续性提供程序假设标识符类型为 如果要使用其他类型,请将 您的 @DiscriminatorValue 必须符合此类型。 |
|
|
默认值 : 31 默认情况下,JPA 持续性提供程序假设标识符列在用于保存 如果该列不适合于您的应用程序或数据库,请将 您的 @DiscriminatorValue 必须符合此长度。 |
|
|
默认值
:JPA 持续性提供程序假设标识符列名为“ 要指定其他列名,请将 |
示例
1-12
显示了如何使用此批注指定一个名为 DISC
、类型为 STRING
、长度为 20
的标识符列。在本示例中,该类的 @DiscriminatorValue
指定为 CUST
。示例
1-13
中的子类将它自己的 @DiscriminatorValue
指定为 VIP
。在 Customer
和 ValuedCustomer
中,@DiscriminatorValue
的值必须可以转换为由 @DiscriminatorColumn
属性 discriminatorType
指定的类型,并且必须符合 @DiscriminatorColumn
属性 length
。
-
在ofbiz框架中实现https双向认证(笔记)
2016-04-08 10:16 407ofbiz默认的配置文件中没有提供服务端信任的证书配置项, ... -
hadoop2.4在windows7搭建单节点环境的简要介绍
2014-05-27 16:18 845本文参照 hadoop2.2在window7上搭建单节点 ... -
关于ofbiz 集成urlrewritefilter实现url 伪静态化
2013-03-19 12:52 1654关于ofbiz 集成urlrewritefilter实现ur ... -
hadoop学习笔记(动态删除节点)
2012-09-19 13:41 923在hadoop集群环境下需要将两台datanode删除,为了不 ... -
CentOS系统安装Tomcat切换JDK的方法
2011-10-14 09:38 1067CentOS系统安装Tomcat切换JDK的方法 ... -
一个从字符串中提取金额的正则表达式
2011-05-19 15:44 2036一个从字符串中提取金额的正则表达式,初 ... -
tomcat远程调试 方法1:适用于tomcat6 修改startup.bat 在尾部修改成以下列方式启动 set JPDA_ADDRESS=8000 se
2011-01-05 12:37 1427tomcat 6 远程调试 ... -
Hadoop学习笔记二 安装部署
2010-07-14 11:22 696原文 http://www.cnblogs.com ... -
Hadoop学习笔记一 简要介绍
2010-07-14 11:21 697这里先大致介绍一下Hadoop. 本文大部分内容都 ... -
Java获取客户端真实IP地址的两种方法(转)
2010-05-14 15:04 1169在JSP里,获取客户端的IP地址的方法是:request.ge ... -
20款开源搜索引擎系统
2010-04-16 19:32 1162一些开源搜索引擎系统介绍,包含开源Web搜索引擎和开源桌面搜索 ... -
在JasperReport报表中加入大写金额(笔记)
2010-04-14 09:06 2558摘自 http://www.blogjava.net/hisp ... -
jdk工具keytool和jarsigner帮助Part2(转)
2010-01-08 12:46 2084jdk工具keytool和jarsigner帮 ... -
jdk工具keytool和jarsigner帮助Part1
2010-01-08 12:41 1548jdk工具keytool和jarsigner帮 ... -
通过urlrewrite和filter实现动态网站生成静态页并缓存的方案
2008-10-06 14:37 3231关于改造动态网站为生成静态页的方案 url 重 ... -
jsp生成验证码
2008-01-15 15:27 837<%@ page contentType="i ... -
tomcat下配置使用awstats笔记
2008-01-10 11:43 4518tomcat下配置使用awstats笔记 1。环境 使用的 ... -
ip地址与Long型数据进行相互转换
2007-12-04 23:17 4413/** * 根据ip地址计算出long型的数据 * @ ... -
java对象初始化过程(转)
2007-04-22 22:57 1294java new 一个实例时候,对象初始化过程 1.父类 st ... -
java 中 Hashtable 排序 (转)
2007-04-10 22:41 4702import java.util.Arrays; import ...
相关推荐
JPA批注参考.JPA批注参考.JPA批注参考.JPA批注参考.
JPA 批注参考 JPA 批注参考 JPA 批注参考
JPA 批注的详细说明文档,自己整理的。
JPA java persistence 批注参考
JPA批注参考(主要介绍JPA中的相关注解)
JPA批注帮助文档,在写持久层时的model注释参考。
JPA批注参考,大家在使用Hibernate annotation和EJB3中的entity时都可以拿来作参考
JPA 批注参考
jpa批注参考
JPA 批注参考-精心整理版1 不下你会后悔的,代码、表格、注视全部精心整理
JPA批注参考,批注还是用的太少了,老记不集一。收集的,备用查询。
使用 JPA 时,可以使用批注配置实体的 JPA 行为。批注是一种使用元数据修饰 Java 源代码的简单表达方法,它编译为相应的 Java 类文件,以便在运行时由 JPA 持续性提供程序解释以管理 JPA 行为。
JPA_批注参考 非常好的JPA文件 jpa的精华 关于JPA很好的文档
包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注
在JPA 之前,Java EE 应用...使用JPA 时,可以使用批注配置实体的JPA 行为。批注是一种使用元数据修饰Java 源代码 的简单表达方法,它编译为相应的Java 类文件,以便在运行时由JPA 持续性提供程序解释以 管理JPA 行为。
作为 Java 企业版 5 (Java EE 5) Enterprise Java Bean (EJB) 3.0 规范的组成部分,Java 持续性 API (JPA) 显著简化了 EJB 持续性并提供 了一个对象关系映射方法,该方法使您可以采用声明方式定义如何通过一种...
JPA批注帮助文档 主要介绍JPA的各种批注以及使用 介绍JPA批注的各种属性
为 Java 企业版 5 (Java EE 5) Enterprise Java Bean (EJB) 3.0 规范的组成部分,Java 持续性 API (JPA) 显著简化了 EJB 持续性并提供了一个对象关系映射方法,该方法使您可以采用声明方式定义如何通过一种标准的可...
JPA批注 pdf文档 用于ssh框架,简单易懂