2009年5月16日土曜日

DataNucleusでJDBC接続

datanucleus.propertiesを作成して
  1. javax.jdo.PersistenceManagerFactoryClass=org.datanucleus.jdo.JDOPersistenceManagerFactory  
  2.   
  3. javax.jdo.option.ConnectionDriverName=org.hsqldb.jdbcDriver  
  4. javax.jdo.option.ConnectionURL=jdbc:hsqldb:hsql://localhost/sealion_db  
  5. javax.jdo.option.ConnectionUserName=sa  
  6. javax.jdo.option.ConnectionPassword=  
  7. javax.jdo.option.Mapping=hsql  

クラスパスのトップにおいて
  1. private static final PersistenceManagerFactory pmfInstance =  
  2.        JDOHelper.getPersistenceManagerFactory("datanucleus.properties");  
  3.    public static PersistenceManagerFactory get() {  
  4.        return pmfInstance;  
  5.    }  

でPersistenceManagerFactoryを取得します。

これと同様にMETA-INF/jdoconfig.xmlを作成して
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"  
  3.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.    xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig">  
  5.   
  6.    <persistence-manager-factory name="transactions-optional">  
  7.        <property name="javax.jdo.PersistenceManagerFactoryClass"  
  8.            value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>  
  9.        <property name="javax.jdo.option.ConnectionURL" value="appengine"/>  
  10.        <property name="javax.jdo.option.NontransactionalRead" value="true"/>  
  11.        <property name="javax.jdo.option.NontransactionalWrite" value="true"/>  
  12.        <property name="javax.jdo.option.RetainValues" value="true"/>  
  13.        <property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/>  
  14.    </persistence-manager-factory>  
  15. </jdoconfig>  

と行います。
その場合は
  1. private static final PersistenceManagerFactory pmfInstance =  
  2.        JDOHelper.getPersistenceManagerFactory("transactions-optional");  
  3.    public static PersistenceManagerFactory get() {  
  4.        return pmfInstance;  
  5.    }  

って感じになります。
何個もセッションを用意する場合は、指定子(transactions-optional)を
変更して追加します。

0 件のコメント: