`
neil-jh
  • 浏览: 147779 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论
阅读更多

DiscriminatorColumn

DiscriminatorColumn定义在使用SINGLE_TABLE或JOINED继承策略的表中区别不继承层次的列。

元数据属性说明:

  • name:column的名字。默认值为TYPE。
  • columnDefinition:生成DDL的sql片断。
  • length:String类型的column的长度,其他类型使用默认值10。

下面的代码定义了一个列名为DISC,长度为20的String类型的区别列。

                
    @Entity
    @Table(name="CUST")
    @Inheritance(strategy=SINGLE_TABLE,
        discriminatorType=STRING,
       discriminatorValue="CUSTOMER")
    @DiscriminatorColumn(name="DISC", length=20)
    public class Customer { ... }

@Embeddable

默认情况下,JPA 持续性提供程序假设每个实体均持久保存到它自己的数据库表。
使用 @Embeddable 批注指定一个类,该类的实例存储为拥有实体的固有部分并共享该实体的身份。嵌入对象的每个持久属性或字段都将映射到实体的数据库表。
此批注没有属性。有关更多详细信息,请参阅
API
示例 1-16 显示了如何使用此批注指定:类 EmploymentPeriod 在用作批注为 @Embedded 的持久字段的类型时可以嵌套到实体中(请参阅示例 1-17 <!----><!---->
<!---->

@Embedded


默认情况下,JPA 持续性提供程序假设每个实体均持久保存到它自己的数据库表。
使用 @Embedded 批注指定一个持久字段,该字段的
@Embeddable 类型可以存储为拥有实体的固有部分,并共享该实体的身份。嵌入对象的每个持久属性或字段均映射到拥有实体的数据库表。
可以结合使用 @Embedded@Embeddable 以建立严格所有权关系的模型,以便在删除了拥有对象的情况下还将删除被拥有的对象。
嵌入的对象不应映射到多个表。
默认情况下,@Embeddable 类中指定的列定义(请参阅 @Column)适用于 @Embedded 类。如果要覆盖这些列定义,请使用 @AttributeOverride
此批注没有属性。有关更多详细信息,请参阅 API
示例 1-17 显示了如何使用该批注指定:@EmbeddableEmploymentPeriod(请参阅示例 1-16)可以使用指定的属性覆盖(请参阅 @AttributeOverride)嵌入到实体类中。如果不需要属性覆盖,则可以完全忽略 @Embedded 批注:JPA 持续性提供程序将推断出 EmploymentPeriod 是从它的 @Embeddable 批注进行嵌套。 <!---->
<!---->
<!---->

@EmbeddedId


使用 @EmbeddedId 批注指定一个由实体拥有的可嵌入复合主键类(通常由两个或更多基元类型或 JDK 对象类型组成)。从原有数据库映射时(此时数据库键由多列组成),通常将出现复合主键。
复合主键类具有下列特征:
  •    
    它是一个普通的旧式 Java 对象 (POJO) 类。    
  •    
    它必须为 public,并且必须有一个 public 无参数构造函数。    
  •    
    如果使用基于属性的访问,则主键类的属性必须为 public 或 protected。    
  •    
    它必须是可序列化的。    
  •    
    它必须定义 equalshashCode 方法。    
    这些方法的值相等性的语义必须与键映射到的数据库类型的数据库相等性一致。    

或者,您可以使复合主键类成为非嵌入类(请参阅
@IdClass)。
此批注没有属性。有关更多详细信息,请参阅 API
示例 1-18 显示了一个批注为 @Embeddable 的典型复合主键类。示例1-19 显示了如何使用可嵌入的复合主键类(使用 @EmbeddedId 批注)配置一个实体。 <!----> <!---->
<!----> <!---->
<!---->

@EntityListeners


可以使用生命周期批注(请参阅
生命周期事件批注)指定实体中的方法,这些方法在指定的生命周期事件发生时执行您的逻辑。
使用 @EntityListeners 批注将一个或多个实体监听程序类与 @Entity@MappedSuperclass 关联,条件是您需要在指定的生命周期事件发生时执行逻辑,以及:
  •    
    不希望在实体 API 中公开生命周期监听程序方法。    
  •    
    要在不同的实体类型之间共享生命周期监听程序逻辑。    

当实体或子类上发生生命周期事件时,JPA 持续性提供程序将按监听程序定义的顺序通知每个实体监听程序,并调用使用相应的生命周期事件类型进行批注的实体监听程序方法(如果有)。
实体监听程序类具有以下特征:
  •    
    它是一个普通的旧式 Java 对象 (POJO) 类    
  •    
    它有一个或多个具有以下签名的回调方法:    
    public void <MethodName>(Object)
    
    
       
    可以指定参数类型 Object,或实体监听程序将与其关联的实体类的类型。    
  •    
    它用一个或多个生命周期事件批注对每个回调方法进行批注。    
    一个生命周期事件只能与一个回调监听程序方法关联,但某个给定的回调监听程序方法可以与多个生命周期事件关联。
分享到:
评论
1 楼 yehuijia 2008-12-30  
谢谢...
帮了很大的忙...

相关推荐

    JPA标注推荐圈子: Database圈子

    ### JPA标注详解 #### 一、概述 Java Persistence API (JPA) 是一种用于管理关系型数据库的对象-关系映射 (ORM) 技术的标准。JPA 提供了一种简单的方法来存储和检索应用程序中的数据。通过使用注解或 XML 描述对象...

    JPA 标注 JPA标签手册

    Java Persistence API (JPA) 是Java企业版5(Java EE 5)的一部分,与Enterprise JavaBeans(EJB)3.0规范一起,极大地简化了Java持久化。它提供了一种对象关系映射方法,允许您以标准、可移植的方式声明性地定义...

    jpa标注中文文档html格式

    **Java Persistence API (JPA)标注详解** Java Persistence API(JPA)是Java平台上的一个标准,用于管理和持久化对象关系映射(ORM)。它提供了一种方式将面向对象的模型转换为数据库中的关系数据。JPA通过使用...

    JPA标注说明文档(带文档结构整理)

    Java 持续性API(JPA)是Java EE 5和更高版本中的一部分,它为开发者提供了一种声明式的对象关系映射(ORM)机制,简化了在Java应用程序中处理关系数据库的操作。JPA允许将Java对象(POJOs)作为实体进行持久化,而...

    jpa常用标注

    在Java Persistence API (JPA) 中,注解是用于配置实体类与数据库表之间映射的关键工具。这些注解使得开发者能够以面向对象的方式描述数据模型,而无需编写大量SQL语句。以下是一些常见的JPA注解及其用途: 1. **@...

    JPA注解 和hibernate 建表

    JPA注解和Hibernate建表 一、JPA概述 Java Persistence API(JPA)是Sun官方提出的Java持久化规范,它只是一个规范不是一个产品。JPA的主要目标是提供一种简洁、易用的方式来访问、操作和管理Java应用程序中的数据...

    jpa框架资源基于hibernate

    2. **实体ID(Entity ID)**: 通常由`@Id`注解标注的属性,对应于数据库表的主键。 3. **实体关系(Entity Relationships)**: 如一对一、一对多、多对一和多对多,使用`@OneToOne`, `@OneToMany`, `@ManyToOne`, `@...

    Spring Data JPA从入门到精通

    每个实体都有一个主键,通常用`@Id`注解标注。如果需要复合主键,可以使用`@IdClass`或`@EmbeddedId`。另外,`@GeneratedValue`用于指定主键生成策略,如自动增长、序列等。 事务管理是数据库操作的关键部分,...

    JPA注解总结

    ### JPA注解详解 Java Persistence API (JPA) 是一种用于管理关系型数据库对象的标准。JPA 使用注解和 XML 来配置实体类与数据库表之间的映射关系。本文将详细解读 JPA 注解的基本用法,并通过 Hibernate 框架作为...

    myabtis jpa插件源码

    2. **Entity类**:这些类通常用 JPA 注解进行标注,如 `@Entity` 表示该类为一个数据库表的映射,`@Table` 指定对应的表名,`@Id` 定义主键字段等。 3. **MyBatis配置**:检查 `mybatis-config.xml` 文件,了解如何...

    jpa技术资料包含文档以及ppt

    此外,它们也可能讨论了如何配置JPA,包括数据源设置、实体管理工厂、实体类的标注以及持久化单元(Persistence Unit)的定义。 **PPT讲解**通常会以更直观的方式呈现JPA的要点,包括图表、流程图和实例演示。PPT...

    Spring-data-jpa常用教程.pdf

    - 实体类需要使用 `@Entity` 注解标注,并定义主键、字段等属性。 2. **创建 Repository 接口**: - 继承 `JpaRepository, ID&gt;` 接口,其中 `T` 是实体类型,`ID` 是主键类型。例如: ```java public ...

    JPA框架jar包

    在Java代码中,一个实体通常是一个标注了`@Entity`注解的类。 2. **实体管理器(EntityManager)**:它是JPA的主要接口,负责执行CRUD(创建、读取、更新、删除)操作。通过实体管理器,我们可以找到、保存、更新和...

    JPA-Hibernate包

    2. 创建实体类,标注`@Entity`,定义属性并标注`@Id`。 3. 创建`persistence.xml`文件,配置实体类、数据源等信息。 4. 在服务层注入`EntityManager`和`EntityManagerFactory`。 5. 使用`EntityManager`的`persist()...

    Hibernate JPA jar包

    - **实体定义**:创建Java类作为实体,并使用`@Entity`、`@Table`、`@Id`等注解进行标注。 - **数据访问对象(DAO)**:创建DAO层,使用Hibernate JPA提供的API进行数据操作,如`EntityManager`和`...

    java springboot+jpa

    - **持久化字段(Persistent Field)**: 通过 `@Id` 标注主键,其他字段默认为持久化字段。 - **实体关系(Relationships)**: 包括一对一、一对多、多对一和多对多关系,通过 `@OneToOne`, `@OneToMany`, `@...

    JPA笔记

    2. **实体ID(Entity ID)**: 每个实体都有一个唯一标识,通常由`@Id`注解标注的属性表示,可以自动生成或手动设置。 3. **持久化上下文(Persistence Context)**: 是JPA中的一个重要概念,它管理着一组持久化实体...

    JAVA程序开发大全---上半部分

    13.3.2 JPA标注配置视图 239 13.3.3 JPA代码编辑辅助功能 240 13.4 Spring整合JPA框架 240 13.4.1 向项目添加Spring框架功能支持 241 13.4.2 反向工程生成JPA 实体类和Spring DAO类 242 13.4.3 创建测试类 243 13.5 ...

Global site tag (gtag.js) - Google Analytics