WEB开发网
开发学院软件开发Java 持久化模式,第 1 部分: 现代 ORM 工具的策略和最... 阅读

持久化模式,第 1 部分: 现代 ORM 工具的策略和最佳实践

 2010-04-02 00:00:00 来源:WEB开发网   
核心提示: 通过使用 Java 5 注解,可以用类级注解在类源代码中直接嵌入数据库映射,持久化模式,第 1 部分: 现代 ORM 工具的策略和最佳实践(3),Java Persistence API 为此定义了一套标准注解,Hibernate 和其他工具现在支持这些注解,但是,必须映射每个具体类的字段,可以

通过使用 Java 5 注解,可以用类级注解在类源代码中直接嵌入数据库映射。Java Persistence API 为此定义了一套标准注解。Hibernate 和其他工具现在支持这些注解。可以通过 @MappedSuperclass 注解使用在基类中定义的映射。只要所有数据库表对通用字段采用相同的列类型和列名,那么只需在基类中编写映射一次,就可以在所有子类中重用。清单 1 是 BaseEntity 类的一个示例:

清单 1. 用 @MappedSuperclass 定义 BaseEntity

        @MappedSuperclass 
public class BaseEntity implements Identifiable{ 
  private Long id; 
 
  @Id 
  @GeneratedValue(strategy = GenerationType.AUTO) 
  public Long getId() { 
    return id; 
  } 
  public void setId(Long id) { 
    this.id = id; 
  } 
} 

清单 1 中的映射把 ID 字段映射到默认列名(id),并指定自动生成 ID(实现方式与数据库相关)。

注意,即使每个表使用不同的列名,仍然可能使用这些通用基字段。请考虑一种典型情况:所有数据库表的主键都是 Long 类型的,但是列名可能不一样。通过重新定义分配给特定子类的一个属性的列,仍然可以重用与 id 属性相关的代码。清单 2 演示如何重新定义与 id 属性相关联的列:

清单 2. 重新定义与 id 属性相关联的列

        @Entity 
@AttributeOverride( name="id", column = @Column(name="EMPLOYEE_ID") ) 
public class Employee extends BaseEntity {//...} 

如果不使用 Hibernate 注解,也可以重用这些基类中的代码。但是,必须映射每个具体类的字段。Hibernate 会在 Java 代码中自动使用继承的字段。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:持久化 模式 部分

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接