2012年7月10日火曜日

CloudBees で RAPアプリケーションを開発する(4) データベースの管理

CloudBees の無料プランでは、5MB の容量制限がありますが、データベースとして MySQL を使用することができます。

データベースの作成
CloudBees のホーム画面で Applications アイコンか、Databases アイコンをクリックすると、PaaS Console 画面が表示されます(下図)。

ここで、左側のメニューから Add New Database をクリックします。次のようなデータベース作成のダイアログが表示されるので、データベース名など必要な情報を入力して Finish ボタンを押してください。

データベースが作成されると、PaaS Console 画面から、リモート接続のための サーバーアドレス, ポート, スキーマ名などが確認できます。


データの作成
MySQL には、GUI ツールの MySQL Workbench(下図) があります。

これを使って、簡単にデータベースをインポートすることができます。 ローカル環境のデータベースから、CloudBees用のデータベースを同じスキーマ名で作成します(容量制限があるため、行数を減らしたり、BLOBデータなどを削除してサイズを調整します)。そしてそれをあらかじめエクスポートしておきます。 次に、新しいリモート接続を作成するために、MySQL Workbench で、New Server Instance をクリックして、上述のリモートアドレスを入力します。 新しく作成されたリモート接続を開いて、先にエクスポートしたダンプデータからインポートします。 インポートされたデータを MySQL Workbench で確認します。


persistence.xml の修正
ローカル環境と異なり、CloudBees で MySQL を使用するには、ドライバやURLの設定を変更する必要があります。
    <persistence-unit name="pu" transaction-type="RESOURCE_LOCAL">
       <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
       <!-- All persistence classes must be listed -->
       <class>rapmobile.db.entity.Contact</class>
       <class>rapmobile.db.entity.Address</class>
       <class>rapmobile.db.entity.Phone</class>
       <class>db.entity.UserAcount</class>
       <properties>
           <property name="javax.persistence.jdbc.driver" value="com.cloudbees.jdbc.Driver" />
           <property name="javax.persistence.jdbc.url"  value="jdbc:cloudbees://rapmobile" />
           <property name="javax.persistence.jdbc.user" value="USER" />
           <property name="javax.persistence.jdbc.password" value="PASS" />

           <property name="eclipselink.ddl-generation" value="update-tables" />
           <property name="eclipselink.ddl-generation.output-mode" value="database" />
            <property name="eclipselink.jdbc.read-connections.min" value="1" />
            <property name="eclipselink.jdbc.write-connections.min" value="1" />
            <property name="eclipselink.jdbc.batch-writing" value="JDBC" />
            <!-- Logging -->
            <!-- property name="eclipselink.logging.level" value="FINE" / -->
            <property name="eclipselink.logging.timestamp" value="false" />
            <property name="eclipselink.logging.session" value="false" />
            <property name="eclipselink.logging.thread" value="false" />

         </properties>
    </persistence-unit>
日頃から、Eclipse, MySQL, Tomcat を使っている場合、CloudBees へ簡単に移行できます。

0 件のコメント: