Java Persistence API (JPA) é uma API padrão da linguagem Java para persistência de dados em bancos de dados relacionais. Em uma aplicação que utiliza JPA
pode ser utilizada, como provedor de persistência, as bibliotecas EclipseLink, Hibernate, OracleTopLink, JBossSeam e JDBCProvider.
as classes de entidade do banco de dados permitem o mapeamento entre objetos da classe e tabelas do banco de dados, utilizando anotações como @Table, @Entity, @PrimaryKey, @Column, @Constraint, @Foreignkey e @EJB.
todas as operações realizadas nas tabelas do banco de dados, como inserção de dados, alteração, consultas e exclusão, são realizadas sem o uso de instruções SQL, ou seja, o desenvolvedor não precisa conhecer SQL para programar.
as configurações de acesso a banco de dados normalmente ficam no arquivo persistence.xml, ligado à aplicação, de forma que se for alterado o servidor de banco de dados não seja necessário alterar o código-fonte Java da aplicação.
as relações existentes entre as tabelas do banco de dados não são refletidas nas classes de entidade criadas na aplicação, o que torna a execução mais rápida. O mapeamento de relações é feito em tempo de execução pelas bibliotecas do provedor de persistência.