JPA中的“按异常配置”是什么意思?

4
在一门关于JPA的课程中,他们说道:
JPA使用“例外配置”来进行默认关系映射。
在这个例子中:
@Entity
public class Student {
    @Id
    private Long id;
    private String name;
    private Float rollno;

    public Student()
    {
    }
    //set of setters and getters
}

他们说:

如果您不提供 @Entity 和 @Id 注释,Student 仍将像一个 POJO 一样行事,而不会被持久化。

我需要帮助理解在这个上下文中使用 Exception 这个词的含义。

JPA 中的 Configuration by Exception 是什么?

2个回答

12
术语“Exception”意味着“超出寻常”。因此,“按异常配置”意味着您指定某些默认方式来完成任务,然后如果在代码的某个特定位置需要以不同的方式执行任务,则仅在该位置提供附加的配置。因此,仅需要在需要执行超出寻常的任务的地方接收额外的配置。
例如,当您使用@Access(AccessType.FIELD)对JPA实体进行注释时,表示JPA在整个实体中应使用字段访问默认访问机制。这意味着JPA应通过直接访问类的字段来持久化您的类。但是,如果在类内部的某个点上有一个您希望JPA使用而不是字段的getter,则可以仅在该getter上指定额外的@Access(AccessType.PROPERTY)注释,然后JPA将使用该getter。
同样地,对于JPA支持的大多数配置选项,都有默认行为,但是您始终可以通过逐案例地提供额外的注释来覆盖此默认行为。
按异常配置的相反方式是,如果JPA要求您为每个字段和getter指定访问类型,那将非常繁琐;或者如果JPA要求您提前指定所有配置,而不允许您在逐案例的基础上选择其他设置。

3
“异常”在这里指的是“免除你的类或类元素的默认行为”。
例如: 1)如果没有使用@ Entity等注释,则上述Student类对于持久提供程序而言仅是一个简单的POJO,这是默认行为。
2)添加@ Entity后,持久提供程序将把Student视为持久化实体,表名称为实体名称(即“Student”;即使此实体名称映射到表名称也是默认行为)。
3)如果您想对上述默认配置进行例外处理,并且希望表名与实体名称不同,则只需使用@Table进行注释即可,以提供不同的表名,这些需在程序中进行配置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接