Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EclipseLink/UserGuide/JPA/Advanced JPA Development/Schema Generation/Index"

m
Line 15: Line 15:
  
 
An index is a database structure defined for a table, to improve query and look-up performance for a set of columns.  
 
An index is a database structure defined for a table, to improve query and look-up performance for a set of columns.  
Use the <tt>@Index</tt> annotation in code or the <tt><index></tt> element in the <tt>orm.xml</tt> desciptor to create an index on a table.  
+
Use the [http://www.eclipse.org/eclipselink/api/latest/org/eclipse/persistence/annotations/Index.html <tt>@Index</tt>] annotation in code or the <tt><index></tt> element in the <tt>orm.xml</tt> descriptor to create an index on a table.  
  
 
An index can be defined on an Entity or on an attribute. For the Entity it must define a set of columns to index.   
 
An index can be defined on an Entity or on an attribute. For the Entity it must define a set of columns to index.   
  
 
<source lang="java">  
 
<source lang="java">  
// Need code sample.
+
@Entity
 +
@Index(name="EMP_NAME_INDEX", columns={"F_NAME","L_NAME"})
 +
public class Employee{
 +
    @Id
 +
    private long id;
 +
    @Index
 +
    @Column(name="F_NAME")
 +
    private String firstName;
 +
    @Index
 +
    @Column(name="L_NAME")
 +
    private String lastName;
 +
    ...
 +
}
 
</source>
 
</source>
  
Line 63: Line 75:
 
</tr>
 
</tr>
 
}}
 
}}
 
<!--
 
<tt>@Index</tt> creates an <tt>IndexDefinition</tt> and stores it on the descriptor's <tt>DatabaseTable</tt>. During default schema generation the <tt>DefaultSchemaGenerator</tt> adds the <tt>IndexDefinition</tt> to the <tt>TableDefinition</tt> to be created. The <tt>IndexDefinition</tt> is used to create indexes for primary key and unique constraints. Support for indexes is defined in the platform. By default a platform is assumed to support indexes. MySQL requires special drop syntax to include the table name in the drop statement. -->
 
  
 
= Configuration File =
 
= Configuration File =

Revision as of 15:25, 1 February 2011

EclipseLink JPA

Eclipselink-logo.gif
EclipseLink
Website
Download
Community
Mailing ListForumsIRCmattermost
Issues
OpenHelp WantedBug Day
Contribute
Browse Source


@Index Annotation and <index> XML

>>>>>>THIS PAGE IS IN PROGRESS. PLEASE SEE DISCUSSION PAGE.<<<<<<

An index is a database structure defined for a table, to improve query and look-up performance for a set of columns. Use the @Index annotation in code or the <index> element in the orm.xml descriptor to create an index on a table.

An index can be defined on an Entity or on an attribute. For the Entity it must define a set of columns to index.

 
@Entity
@Index(name="EMP_NAME_INDEX", columns={"F_NAME","L_NAME"})
public class Employee{
    @Id
    private long id;
    @Index
    @Column(name="F_NAME")
    private String firstName;
    @Index
    @Column(name="L_NAME")
    private String lastName;
    ...
}
@Index Attributes
Attribute Description Default Required?
catalog The catalog of the INDEX. ? No
columnNames Specify the set of columns to define the index on. For an Entity , the table. For an attribute, the table and column. Not required when annotated on a field or method.
name The name of the INDEX. _<column>_INDEX (but a name should be provided) No
schema The schema of the INDEX. ? No
table The table to define the index on, defaults to entities primary table. The entity's primary table. No
unique Specify whether the index is unique or non-unique. false No

Configuration File

Create an index in orm.xml using <index>, as follows:

<index name="EMP_NAME_INDEX" table="EMPLOYEE" unique="true">
    <column>F_NAME</column>
    <column>L_NAME</column>
</index>

Eclipselink-logo.gif
Version: 2.2.0 DRAFT
Other versions...

Back to the top