JPA中的@MappedSuperclass
说明地址:http://docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html
用来申明一个超类,继承这个类的子类映射时要映射此类中的字段,可以当做是对entity抽取封装的类。如果子类想重写此类的映射信息,可以使用 AttributeOverride
and AssociationOverride
annotations
Example: Concrete class as a mapped superclass
@MappedSuperclass
public class Employee {
@Id
protected Integer empId;
@Version
protected Integer version;
@ManyToOne @JoinColumn(name="ADDR")
protected Address address;
public Integer getEmpId() { ... }
public void setEmpId(Integer id) { ... }
public Address getAddress() { ... }
public void setAddress(Address addr) { ... }
}
// Default table is FTEMPLOYEE table
@Entity
public class FTEmployee extends Employee {
// Inherited empId field mapped to FTEMPLOYEE.EMPID
// Inherited version field mapped to FTEMPLOYEE.VERSION
// Inherited address field mapped to FTEMPLOYEE.ADDR fk
// Defaults to FTEMPLOYEE.SALARY
protected Integer salary;
public FTEmployee() {}
public Integer getSalary() { ... }
public void setSalary(Integer salary) { ... }
}
@Entity @Table(name="PT_EMP")
@AssociationOverride(name="address",
joincolumns=@JoinColumn(name="ADDR_ID"))
public class PartTimeEmployee extends Employee {
// Inherited empId field mapped to PT_EMP.EMPID
// Inherited version field mapped to PT_EMP.VERSION
// address field mapping overridden to PT_EMP.ADDR_ID fk
@Column(name="WAGE")
protected Float hourlyWage;
public PartTimeEmployee() {}
public Float getHourlyWage() { ... }
public void setHourlyWage(Float wage) { ... }
}
Example: Non-entity superclass
public class Cart {
// This state is transient
Integer operationCount;
public Cart() { operationCount = 0; }
public Integer getOperationCount() { return operationCount; }
public void incrementOperationCount() { operationCount++; }
}
@Entity
public class ShoppingCart extends Cart {
Collection items = new Vector();
public ShoppingCart() { super(); }
...
@OneToMany
public Collection getItems() { return items; }
public void addItem(Item item) {
items.add(item);
incrementOperationCount();
}
}
分享到:
相关推荐
`@MappedSuperclass`是一个特殊的注解,用于标记那些包含共享属性的基类,这些基类本身不是完整的实体,也不会直接映射到数据库表中。相反,它们的属性会被继承到子类中,并由子类映射到相应的数据库表中。 **关键...
本文主要探讨 JPA 中的三种关键批注:`@AssociationOverride`、`@AssociationOverrides` 和 `@AttributeOverride`,这些批注主要用于定制 JPA 映射,以适应不同的业务需求。 #### 二、`@AssociationOverride` 批注...
Java Persistence API (JPA) 是 Java 平台中用于处理对象关系映射(ORM)的标准接口。它简化了 Java 应用程序与关系型数据库之间的交互,使得开发者能够以面向对象的方式来操作数据库。本文将详细介绍 JPA 中的主要...
随着Java技术的不断发展与进步,JPA(Java Persistence API)作为一种重要的持久层规范,在Java应用开发中扮演着越来越重要的角色。尤其在JDK 1.6引入了注解之后,JPA的应用变得更加便捷和高效。本文将详细介绍JPA...
Java 持续性API(JPA)是Java EE 5和Java SE 5中引入的一个标准,它简化了对象关系映射(ORM)的过程,允许开发者以声明式的方式定义Java对象如何与关系数据库中的表进行映射。JPA通过使用批注(Annotations)来配置...
Java持久化API (JPA) 是Java企业版5(JavaEE5) Enterprise JavaBean (EJB) 3.0规范的一部分,它的引入极大地简化了EJB的持久化过程,同时也提供了一种声明式的方法来定义Java对象如何被映射到关系数据库表中,这种...
JPA允许开发者通过声明式的方法将Java对象映射到关系型数据库的表中,从而减少对底层数据库操作的编码量,提供可移植性,并使Java对象与数据库之间的转换变得标准化。 JPA的核心概念包括以下几个方面: 1. 实体...
- **`@MappedSuperclass`**:如何将通用属性抽取到基类中。 - **`@Embeddable`**:解释嵌入式对象的使用场景和定义方式。 - **实体监听器**:如何指定实体监听器。 - **示例**:通过示例展示这些元数据注解的...
在Java Persistence API (JPA) 和 Hibernate ORM 框架中,继承注解是用于处理对象关系映射(ORM)中的类继承结构的关键概念。这些注解帮助开发者将数据库表的设计与面向对象的代码结构相匹配,使得在复杂的业务场景...
JPA(Java Persistence API)是Java平台标准版的一部分,用于在Java应用程序中实现数据持久化。本文将详细介绍JPA中常用注解的使用方法和技巧。 @Entity:此注解用于声明一个类是实体类,并且该类中的对象会被映射...
- **定义与背景**:OpenJPA是Apache组织提供的一款开源项目,它实现了Java Persistence API(JPA)规范,该规范源自EJB 3.0中的JPA标准。OpenJPA作为一个持久化框架,为开发人员提供了强大且易于使用的数据持久化...
### Spring Boot集成JPA,开箱即用 #### 1....通过以上步骤,我们可以非常方便地在Spring Boot应用中集成JPA,实现数据库的快速访问。这种方式不仅提高了开发效率,还使得代码更加清晰、易于维护。
而使用JPA,则可以将任何普通的Java POJO指定为JPA实体,即可以通过JPA持久性提供程序的服务将其非持久字段持久保存到关系数据库(既可以在Java EE EJB容器内部,也可以在独立的Java SE应用程序中的EJB容器外部)。...
在Java中,`@MappedSuperClass`是Hibernate提供的一个注解,它用于标记那些不直接映射到数据库表,但含有可继承字段或方法的抽象类。当一个类被这个注解标识时,它的属性和方法会被其子类继承,并且这些属性和方法会...
Java持久化API(Java Persistence API,简称JPA)是Java平台上的一个标准,用于管理和持久化应用程序中的对象。它提供了一种方式来映射Java对象到数据库中的表,简化了数据库操作,使得开发者可以使用面向对象的方式...
**Apache OpenJPA 用户指南** 是一份详尽的文档,旨在帮助开发人员理解和掌握 Java Persistence API (JPA) 的核心概念及其在实际项目中的应用。该指南适用于希望了解如何使用 JPA 进行对象关系映射(ORM)的开发人员...
JPA是EJB 3.0引入的一个标准接口,它简化了对象关系映射(ORM),使得开发人员能够将Java对象直接持久化到关系数据库中,而无需编写大量的SQL代码。JPA的核心在于提供了一种声明式的方法来管理对象的生命周期和状态...
- **为什么选择JPA**:这部分讨论了为什么JPA是现代Java应用程序中的首选持久化技术,包括其标准化、易用性和跨平台支持等方面的优势。 - **JPA架构**:详细介绍了JPA的架构,包括其核心组件如实体管理器、持久化上...