2 回答
- 321
下記サイトに記載されておりますがテーブル名の前に"AO_XXXXXX_"が追加されてしまいます。
"AO_XXXXXX_"を追加しないようにすることはできるのでしょうか?できません(確か)。
ActiveObjectはそのテーブルにデータを蓄積するためのものなので、追加されてほしくない利用ケースがあまりわからないのですが…
Confluenceがアドオンに永続データを保持するために提供している機能としては
Persistence in Confluence と後から追加された ActiveObject の以下4つです。
- Bandana
- Hibernate
- Content properties
- ActiveObject
Hibernateの場合は、ConfluenceのDBセッションを利用してConfluence DBにつなげることができます。
使い方は以下情報などが参考になると思います。
- https://answers.atlassian.com/questions/50555/access-to-hibernate-connection
- https://developer.atlassian.com/confdev/development-resources/confluence-architecture/hibernate-sessions-and-transaction-management-guidelines
- https://developer.atlassian.com/confdev/development-resources/confluence-architecture/hibernate-sessions-and-transaction-management-guidelines/hibernate-session-and-transaction-management-for-bulk-operations
あとは、JIRA、Confluenceのソースコードをダウンロードしたい より製品ソースコードをダウンロードして検索してみたら製品のバンドルアドオンで利用している例があると思うので参考になるかと思います。
AO以外でConfluenceのプラグインからDBと連携できるフレームワーク等のサンプルはございますでしょうか?
どんなアドオンを実装しようとしているのか細かくはわからないのですが、
Confluenceのプラグインから外部DB?もしくはConfluenceのDBに接続して何かを表示したいイメージですかね..
代表的なアドオンとしては以下のようなことを実現したいイメージ?
- PocketQuery 無償
これらのアドオンの実装は公開されてないので不明ですが...
実際のところアドオンはJavaプログラムなのでJDBCで外部DBへ接続することはできます。
JDBCで直接接続する場合の注意点は、Confluenceとは違うDBのタイプに接続する場合、ConfluenceのインストールディレクトリにJDBCのドライバーが入ってないと接続できないはずです。
あとはConfluenceのDBセッションとは別セッションで接続しているため、コネクションリークやらコネクション過多にご注意を。ConfluenceのDBセッションに影響させないようにする利点でもあります
が…
(結局Javaなので、データをConfluenceホームディレクトリとかどこかにファイル配置して読み出し・書き出しするとか、REST APIで呼び出し・書き出しするとか色々できますけどね…)
少しでも参考になりましたら、幸いです。
- 田原一樹
色々とご教授いただき本当にありがとうございます。
まだまだConfluenceの知識が乏しいため、上記を参考させていただきます。
コメントを追加... - 432
AO_XXXXXX_"を追加しないようにすることはできないと思います。やろうと思ったこともないですけどね。
Confluenceが利用しているPersistence技術がここに書いてあります。
https://developer.atlassian.com/confdev/development-resources/confluence-architecture/confluence-internals/persistence-in-confluenceプラグインから簡単に使えるのはBandanaとContent propertiesですが、両者とも大量かつ構造化データに向かないです。プラグインを高度にしたいときに大量かつ構造化データができないと困るので、Atlassianの推奨通りActive Objects使った方が良いと思います。
- 田原一樹
回答頂きありがとうございます。
今回は大量のデータを取り扱うためActive Objectsを利用しようと思います。また、Persistence技術の参考サイトを教えていただきありがとうございます。
参考にさせていただきます。
コメントを追加...
Confluenceにおいて、ActiveObjectでDBと連携をする際、
下記サイトに記載されておりますがテーブル名の前に"AO_XXXXXX_"が追加されてしまいます。
"AO_XXXXXX_"を追加しないようにすることはできるのでしょうか?
https://developer.atlassian.com/docs/atlassian-platform-common-components/active-objects/developing-your-plugin-with-active-objects/active-objects-faq/table-names
また、AO以外でConfluenceのプラグインからDBと連携できるフレームワーク等のサンプルはございますでしょうか?