About

ドキュメント

プロジェクト文書

Built by Maven

S2TopLink-JPAの機能を使用するにあたり、エンティティ、Dao(.java)、diconファイル、persistence.xmlの作成が必要になります。

エンティティ

Persistence APIの仕様に合わせてエンティティを作成します。

エンティティクラスの自動検出と永続ユニットへの自答登録を行うためにエンティティは特定のパッケージに配置します。 詳細はクラスの自動登録 を参照してください。

Dao(Data Access Object)

Daoの実装方法

  • EntityManager型のフィールドを定義し、コンストラクタあるいはプロパティ経由で実装オブジェクトを受け取るように記述します。
    private EntityManager entityManager;
    
    public void setEntityManager(EntityManager entityManager) {
    	this.entityManager = entityManager;
    }
    
    または、JPAのPersistenceContextアノテーションを利用して実装オブジェクトを設定してください。
    @PersistenceContext
    private EntityManager entityManager;
    
  • 各メソッドでEntityManagerに対する処理を記述します。
    public Employee getEmployee(int empno) {
    	return entityManager.find(Employee.class, 7788);
    }
    

diconファイル

  • jpa.dionを設定します。以下のjpa.diconはs2toplink-jpa/resourcesに含まれるものと同一です(ただし改行位置やインデントの桁数は異なります)。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
    	"http://www.seasar.org/dtd/components24.dtd">
    <components initializeOnCreate="true">
    	<include path="s2toplink-jpa.dicon"/>
    
    	<component name="persistenceUnitProvider"
    		class="org.seasar.framework.jpa.impl.ContainerPersistenceUnitProvider">
    		<property name="unitName">"persistenceUnit"</property>
    		<property name="providerClassName">
    			"oracle.toplink.essentials.PersistenceProvider"
    		</property>
    	</component>
    
    	<component name="entityManagerFactory" class="javax.persistence.EntityManagerFactory">
    		persistenceUnitProvider.entityManagerFactory
    	</component>
    
    	<component name="entityManager"
    		class="org.seasar.framework.jpa.impl.TxScopedEntityManagerProxy">
    		<aspect pointcut="createNamedQuery">
    			<component
    				class="org.seasar.toplink.jpa.aop.interceptors.S2TopLinkEntityManagerInterceptor"/>
    		</aspect>
    	</component>
    </components>
    
    persistenceUnitProviderコンポーネントのunitNameプロパティに指定する値はpersistence.xmlで定義する永続ユニット名と一致させてください。
  • jpa.diconは他のdiconファイルやテストクラスでインクルード して利用します。
    <components>
      <include path="jpa.dicon"/>
      ...
    </components>
    
  • 永続クラスとマッピングファイルの自動検出/登録を有効にするにはSMART deployが必要です。 SMARAT deployの設定に必要なconvention.dicon、creator.dicon、customizer.diconについてはSMART deploy を参照してください。

persistence.xml

  • persistence.xmはJPAで定められた設定ファイルです。クラスパスの通っているディレクトリにMETA-INFディレクトリを作成しpersistence.xmlを格納します。以下のpersistence.xmlはs2toplink-jpa/resourcesに含まれるものと同一です(ただし改行位置やインデントの桁数は異なります)。
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    	http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    	version="1.0">
    	<persistence-unit name="persistenceUnit" transaction-type="JTA">
    		<provider>oracle.toplink.essentials.PersistenceProvider</provider>
    		<jta-data-source>jdbc/dataSource</jta-data-source>
    		<exclude-unlisted-classes>true</exclude-unlisted-classes>
    		<properties>
    			<property name="toplink.target-server"
    				value="org.seasar.toplink.jpa.platform.server.S2ServerPlatform"/>
    			<property name="toplink.target-database"
    				value="oracle.toplink.essentials.platform.database.H2Platform"/>
    			<property name="toplink.logging.level" value="FINE"/>
    			<property name="toplink.cache.shared.default" value="false"/>
     		</properties>
    	</persistence-unit>
    </persistence>
    永続ユニット名にはpersistenceUnitと指定します。
    データソース名は、jdbc.diconの名前空間名.dataSourceコンポーネント名と一致させてください。
    プロパティのtoplink.target-databaseの値は使用するデータベースに合わせて変更してください。