10 votes

JPA : définition d'une colonne d'index

Duplicata possible :
Spécifier un index (clé non unique) avec JPA

Existe-t-il un moyen de définir un index sur la colonne enitity, pour améliorer les performances des recherches ? J'ai vu qu'Hibernate donne @Index et @IndexColumn, mais je cherche un moyen JPA de le faire.

merci

Voici un exemple de mon entité, j'ai besoin d'indexer une colonne de nom

@Entity
@Table(name = "MY_TABLE")
public class MyEntity {
    private long id;
    private String name;
    private String sourceInfo;

  ...

30voto

Augusto Points 14531

Non, jpa ne fournit aucune fonctionnalité pour définir ou créer des index. Pour une raison (inconnue de moi), il est seulement possible de créer des index uniques dans JPA.

Si vous n'utilisez pas Hibernate ou si vous ne voulez vraiment pas utiliser ces annotations, vous devrez construire vos annotations et votre processeur pour sortir ou mettre à jour la base de données en conséquence, mais je ne pense pas que ce soit très trivial (et c'est définitivement non standard).

Modifier

Voici un exemple de la façon de définir un index avec Hibernate

@org.hibernate.annotations.Table(
   appliesTo = "table_name",
   indexes = {
      @Index(name="single_column_index", columnNames = "col"),
      @Index(name="multi_column_index", columnNames = {"col1", "col2"}),
   }
)

2voto

James Points 18355

Il n'existe pas d'annotation JPA standard. (JPA ne nécessite même pas la génération de DDL).

Pour EclipseLink voir la page @Index .

2voto

ruslan Points 5754

OpenJPA vous permet de spécifier une annotation non standard pour définir un index sur une propriété.

Les détails sont aquí .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X