46
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JPAの基礎1

Last updated at Posted at 2016-12-28

JPAの概要

JPAとは?

JPAは「Java Persistence (JSR 338)」の略称であり、Java EE標準のO/R MappingおよびDAOの技術仕様です(元々の名称は「Java Persistence API」であり、その略称「JPA」が現在でも一般的に使用されているため、このドキュメントでも「JPA」という名称を使用します)。

現行のJava EE 7に含まれるバージョンは「2.1」

JPAはJava EEの「Enterprise Application Technologies」に含まれる技術仕様ですが、Servlet/JSPやEJBなどと異なり、コンテナ・ベースのアーキテクチャを採用していないためJava SEでも利用可能です。

JPAの代表的な実装

JPAの代表的な実装には以下に示すものがあります。

「EclipseLink」は元々Oracleが開発し、eclipse.orgに寄贈したJPAのRIです。また「Hibernate ORM」はJPA仕様のオリジナルとなったORM Frameworkであり、実質この2つの実装の何れかを使用するのが一般的です。

「EclipseLink 2.5」以降および「Hibernate ORM 4.3」以降のバージョンはJPA 2.1に対応していますが、「Apache Open JPA」の現行バージョン「2.x」はJPA 2.0にしか対応していません(JPA 2.1対応バージョンは現在開発中です)。

JPAの構成要素

最初にJPAのテクノロジーを構成する主な要素を簡単に見ておきましょう。

● Entity

永続化オブジェクト」を表します。具体的にはデータベースのテーブルと1対1で対応する「
Javaのクラス(Entity Class)」およびその「インスタンス(Entity Object)」です。

● Entity Manager

Entityオブジェクトのライフサイクル管理とDAO機能を提供します。

● Persistence Context

「永続化コンテキスト」を表します。

● Persistence Unit

Persistence Contextを生成します。

● Transaction

「トランザクション」を表します。

● JPQL(Java Persistence Query Language)

JPA専用の問い合わせ言語です。SQLによく似た言語であり、Entityの型を識別することにより、型安全な問い合わせを記述することができる仕組みが提供されています。

JPAの設定ファイル

JAPでは以下に示すような「persistence.xml」と呼ばれるXML形式のファイルを用いて、データベースとの接続情報などの基本設定を記述します。

persistence.xml
<?xml version="1.0" encoding="UTF-8"?>

<persistence version="2.1"
	xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">

	<persistence-unit name="JPAExample">
	
		<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
		
		<class>entity.Author</class>
		
		<properties>
			<property name="javax.persistence.jdbc.url"	value="jdbc:mysql://localhost:3306/test?useSSL=false&amp;serverTimezone=Asia/Tokyo" />
			<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" />
			<property name="javax.persistence.jdbc.user" value="root" />
			<property name="javax.persistence.jdbc.password" value="mysql" />
		</properties>
		
	</persistence-unit>

</persistence>

persistence

persistence.xmlドキュメントのルート要素であり、JPAのバージョンや名前空間の参照などを記述します。

persistence-unit

persistenceの直接の子要素であり、単一の永続化対象を表します。具体的には1つのデータベースへの接続情報と関連するプロパティの設定です。このpersistence-unitでは「name」属性の記述が必須であり、この名前を用いて「persistence-unit」を一意に識別します。

provider

persistence-unitの子要素であり、使用するJPAプロバイダーを記述します。JPAプロバイダーとは「JPAの実装」のことであり、上記例ではEclipseLinkを使用する場合の記述となっています。

class

persistence-unitの子要素であり、このユニットでの管理対象とするEntityクラスを記述します。

properties

データベースの接続に関連する情報を記述します。具体的にはJDBC URIやユーザー名、パスワードなどです。また、実装固有の設定情報を記述することもできます。

46
46
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?