web-dev-qa-db-fra.com

Quelle est la signification exacte de l'annotation JPA @Entity?

J'étudie JPA dans l'application Spring et j'ai des doutes concernant l'annotation @ Entity.

J'ai donc une classe modèle comme celle-ci:

@Entity
@Table(name= “T_CUSTOMER”)
public class Customer {

    @Id
    @Column(name=“cust_id”)
    private Long id;

    @Column(name=“first_name”)
    private String firstName;

    @Transient
    private User currentUser;

    ...........................
    ...........................
    ...........................
}

Ok, je sais que l'annotation @ Entity est au niveau de la classe et cela signifie que les champs de l'objet qui sont des instances de cette classe doivent être mappés au champ de T_CUSTOMER table de base de données.

Mais pourquoi dans JPA, il est obligatoire d'utiliser l'annotation @ Entity et je ne peux pas uniquement utiliser l'annotation @ Table pour mapper un objet modèle à une table de base de données spécifique? Il a un autre sens\comportement qui me manque réellement?

Qu'est-ce que je rate? Quelle est la signification exacte de l'annotation @ Entity?

23
AndreaNobili

@Entity l'annotation définit qu'une classe peut être mappée à une table. Et c'est tout, c'est juste un marqueur, comme par exemple l'interface Serializable.

Et pourquoi @Entity l'annotation est obligatoire? ... eh bien, c'est la façon dont JPA est conçu. Lorsque vous créez une nouvelle entité, vous devez faire au moins deux choses

  1. annoté avec @Entity

  2. créer un champ id et l'annoter avec @Id

Tout le reste est facultatif, par exemple le nom de la table est dérivé du nom de la classe d'entité (et donc @Table l'annotation peut être facultative), les colonnes du tableau sont dérivées de variables d'entités (et donc @Column l'annotation peut être facultative), etc.

JPA essaie de fournir un démarrage rapide et facile aux développeurs qui souhaitent apprendre/utiliser cette API, et donner aux développeurs la possibilité de configurer le moins de choses possible pour rendre quelque chose fonctionnel est l'une des façons dont cette API veut atteindre ce "facile" utiliser/apprendre "objectif. D'où le @Entity annotation (avec @Id annotation) est le minimum que vous devez faire pour créer une entité.

40
ioko

Les entités dans JPA ne sont rien d'autre que des POJO représentant des données qui peuvent être conservées dans la base de données. Une entité représente une table stockée dans une base de données. Chaque instance d'une entité représente une ligne du tableau.

En savoir plus sur les entités: https://www.baeldung.com/jpa-entities

0
Diyan Georgiev