OceanBase
English日本語简体中文
ドキュメントホーム
製品
エコシステム
リリース

データベース

OceanBase CloudOceanBaseデータベース

データベース

OceanBase CloudOceanBaseデータベース
OceanBase CloudOceanBaseデータベース

OceanBase Cloud

  • 製品アップデート
    • What's new
      • 2026年リリース履歴
      • 2025年リリース履歴
      • 2024年リリース履歴
      • バージョン履歴
    • Product announcements
      • OceanBase Alibaba Cloudプロキシクラスタの基盤コンポーネントのアップグレードに関するお知らせ
      • AIサービスモデルの追加・削除に関するお知らせ
      • データ開発機能のサービス終了に関するお知らせ
      • バックアップ・リストアの商用化戦略の最適化
      • データベースプロキシの課金変更について
      • AWSインスタンスの料金調整について
      • OMS 無料提供対象インスタンスの正式課金開始に関するお知らせ
      • OceanBaseのAWSチャネルにおけるトラフィック料金調整に関するお知らせ
  • プロダクトの紹介
    • OceanBase Cloudの概要
    • 管理モードと適用シナリオ
    • コア機能
      • クロスクラウドアクティブ-アクティブによる高可用性の実現
      • クロスクラウドのプライマリ/スタンバイデータベースによる高可用性の実現
      • 多層的オンラインスケーリングとオンデマンド構成変更
    • デプロイプラン
    • 製品仕様
    • プロダクト課金
      • 請求の概要
      • インスタンス課金説明
        • Alibaba Cloudインスタンスの課金
        • Huawei Cloudインスタンスの課金
        • AWSインスタンスの課金
        • Google Cloud(GCP)インスタンスの課金
        • Azureインスタンスの課金
      • バックアップとリストアの課金
      • SQL監査の料金説明
      • データ移行の料金に関する説明
      • データベースプロキシの課金について
      • Binlogサービスの料金説明
      • 読み取り専用レプリカの料金説明
      • AIモデルの課金に関する説明
    • サポートするデータベースバージョン
  • クイックスタート
    • フラッグシップ版クイックスタート
    • フラッグシップ版クラスタインスタンスの作成
    • テナントの作成
    • データベースの使用
  • DBaaS インスタンスの使用
    • フラッグシップ版インスタンスの使用
      • フラッグシップ版インスタンスの概要
      • インスタンスの作成
        • 概要
        • OceanBase Cloud公式サイト経由での作成
        • AWS Marketplace経由での作成
        • GCP Marketplace経由での作成
        • Huawei Cloud Marketでインスタンスを作成する
        • Alibaba Cloud Marketplace経由での作成
        • Azure Marketplaceでインスタンスを作成する
      • インスタンスへの接続
        • ネットワーク接続の設定
          • 概要
          • パブリックIPアドレスを使用したデータベースへの接続
          • Azure Private Linkを使用したデータベースへの接続
          • Google Cloud Private Service Connectを使用したデータベースへの接続
          • Huawei Cloud VPCエンドポイントを使用してデータベースに接続する
          • Huawei Cloudピアリング接続を使用してデータベースに接続する
          • AWS PrivateLink を使用したデータベースへの接続
          • AWSピアリング接続を使用してデータベースに接続する
          • Alibaba Cloudのプライベートネットワーク接続を使用したデータベース接続
        • MySQL モード接続
          • クライアントを介した接続
            • デスクトップ版 ODC を使用した OceanBase Cloud クラウドデータベースへの接続
            • MySQLクライアントを使用したOceanBase Cloudへの接続
            • OBClient を使用した OceanBase Cloud クラウドデータベースへの接続
          • ドライバー/ORM フレームワークを介した接続
            • Java
              • SpringBootを使用してOceanBase Cloudデータベースに接続するサンプルプログラム
              • SpringBatchでOB Cloudデータベースに接続するサンプルプログラム
              • Spring JDBCを使用したOceanBase Cloud接続のサンプルプログラム
              • SpringDataJPA による OB Cloud への接続サンプルプログラム
              • Hibernate を使用して OceanBase Cloud クラウドデータベースに接続するサンプルプログラム
              • MyBatis を使用して OceanBase Cloud データベースに接続するサンプルプログラム
              • MySQL Connector/J を使用して OceanBase Cloud データベースに接続するサンプルプログラム
              • TestContainers Java を使用して OceanBase Cloud データベースに接続するサンプルプログラム
            • Python
              • mysqlclient を使用した OceanBase Cloud クラウドデータベース接続のサンプルプログラム
              • PyMySQL による OceanBase Cloud データベース接続のサンプルプログラム
              • MySQL-connector-pythonによるOceanBase Cloud接続のサンプルプログラム
              • SQLAlchemyを使用したOceanBase Cloudへの接続サンプルプログラム
              • Djangoを使用したOceanBase Cloud接続のサンプルプログラム
              • peeweeを使用したOceanBase Cloudへの接続サンプルプログラム
            • C
              • MySQL Connector/C を使用した OceanBase Cloud データベースへの接続サンプルプログラム
            • Go
              • Go-SQL-Driver/MySQL を使用して OceanBase Cloud クラウドデータベースに接続するサンプルプログラム
              • GORM を使用した OceanBase Cloud データベース接続のサンプルプログラム
            • PHP
              • EXTドライバを使用してOceanBase Cloudへ接続するサンプルプログラム
              • MySQLiドライバを使用したOceanBase Cloudへの接続
              • PDOドライバを使用したOceanBase Cloudへの接続
            • Rust
              • Rustを使用したOceanBase Cloud接続のサンプルプログラム
              • SeaORM を使用した OceanBase Cloud クラウドデータベース接続のサンプルプログラム
            • Ruby
              • ActiveRecordによるOceanBase Cloud接続のサンプルプログラム
              • mysql2 を使用した OceanBase Cloud クラウドデータベース接続のサンプルプログラム
              • Sequelを使用したOceanBase Cloudへの接続サンプルプログラム
          • データベース接続プールの使用
            • データベース接続プールの設定
            • Tomcat接続プールを使用してOceanBase データベースに接続するサンプルプログラム
            • C3P0 コネクションプールを使用して OceanBase データベースに接続するサンプルプログラム
            • Proxoolコネクションプールを使用してOceanBaseデータベースに接続するサンプルプログラム
            • HikariCP コネクションプールを使用して OceanBase データベースに接続するサンプルプログラム
            • DBCPコネクションプールを使用してOceanBaseデータベースに接続するサンプルプログラム
            • Commons Pool を使用して OceanBase データベースに接続するサンプルプログラム
            • Druid コネクションプールを使用して OceanBase データベースに接続するサンプルプログラム
        • Oracle モード接続
          • クライアントを介した接続
            • OBClientを使用してOceanBase Cloudデータベースに接続する
            • デスクトップ版ODCによるOceanBase Cloudデータベースへの接続
          • ドライバー/ORM フレームワークを介した接続
            • Java
              • OceanBase Connector/J による OceanBase Cloud クラウドデータベース接続サンプルプログラム
              • SpringBootでOceanBase Cloudデータベースに接続するサンプルプログラム
              • SpringBatchでOceanBase Cloudに接続するサンプルプログラム
              • Spring JDBCによるOceanBase Cloudデータベース接続サンプルプログラム
              • SpringDataJPA による OceanBase Cloud クラウドデータベース接続サンプルプログラム
              • HibernateでOceanBase Cloudに接続するサンプルプログラム
              • MyBatisでOceanBase Cloudに接続するサンプルプログラム
              • JfinalによるOceanBase Cloudデータベース接続サンプルプログラム
            • Python
              • Pythonドライバーを使用してOceanBase CloudのOracleモードに接続する方法
            • C/C++
              • OceanBase Connector/C による OceanBase Cloud への接続サンプルプログラム
              • OceanBase Connector/ODBC による OceanBase Cloud クラウドデータベース接続サンプルプログラム
              • SqlSugar による OceanBase Cloud への接続サンプルプログラム
          • データベース接続プールの使用
            • データベース接続プールの設定
            • Tomcat接続プールを使用したOceanBase Cloudデータベース接続サンプルプログラム
            • C3P0接続プールでOceanBase Cloudに接続するサンプルプログラム
            • Proxool接続プールを使用したOceanBase Cloudデータベース接続サンプルプログラム
            • HikariCP接続プールを使用したOceanBase Cloudデータベース接続サンプルプログラム
            • DBCP接続プールを使用したOceanBase Cloudデータベース接続サンプルプログラム
            • Commons Pool による OceanBase Cloud への接続サンプルプログラム
            • Druid接続プールを使用したOceanBase Cloudデータベース接続サンプルプログラム
        • KV モード接続
          • OBKV-HBase クライアントを使用したクラスタへの接続
      • 開発リファレンス
        • MySQL モード
          • データオブジェクトの設計
            • データベースの作成
            • テーブルグループの作成
            • テーブルの作成
            • インデックスの作成
            • 外部テーブルの作成
          • データの書き込み
            • データの挿入
            • データの更新
            • データの削除
            • データの置換
            • テストデータの一括生成
          • データの読み取り
            • シングルテーブルクエリ
            • マルチテーブル結合
              • INNER JOIN
              • FULL JOIN
              • LEFT JOIN
              • RIGHT JOIN
              • サブクエリ
              • ラテラル派生テーブル
            • クエリでの演算子と関数の使用
              • クエリでの算術演算子の使用
              • クエリでの数値関数の使用
              • クエリでの文字列連結演算子の使用
              • クエリでの文字列関数の使用
              • クエリでの時間関数の使用
              • クエリでの集約関数の使用
              • クエリでのNULL関連関数の使用
              • クエリでのCASE条件演算子の使用
              • クエリ結果のロック SELECT FOR UPDATE
              • クエリ結果のロック LOCK IN SHARE MODE
            • DBLinkを使用したクエリの実行
            • 集合演算
          • トランザクション
            • トランザクション管理の概要
            • トランザクションの開始
            • セーブポイント
              • セーブポイントの設定
              • トランザクションを特定のセーブポイントまでロールバック
              • セーブポイントの解放
            • トランザクションのコミット
            • トランザクションのロールバック
        • Oracle モード
          • データオブジェクトの設計
            • テーブルグループの作成
            • テーブルの作成
            • インデックスの作成
            • 外部テーブルの作成
          • データの書き込み
            • データの挿入
            • データの更新
            • データの削除
            • データの置換
            • テストデータの一括生成
          • データの読み取り
            • 単一テーブルのクエリ
            • マルチテーブル結合
              • INNER JOIN
              • FULL JOIN
              • LEFT JOIN
              • RIGHT JOIN
              • サブクエリ
              • ラテラル派生テーブル
            • クエリでの演算子と関数の使用
              • クエリでの算術演算子の使用
              • クエリにおける数値関数の使用
              • クエリでの文字列連結演算子の使用
              • クエリにおける文字列関数の使用
              • クエリでの時刻関数の使用
              • クエリにおける集約関数の使用
              • クエリにおけるCASE関数の使用
            • DBLinkを使用したクエリの実行
            • 集合演算
          • トランザクション
            • トランザクション管理の概要
            • トランザクションの開始
            • セーブポイント
              • セーブポイントの設定
              • トランザクションを特定のセーブポイントまでロールバック
            • トランザクションのコミット
            • トランザクションのロールバック
        • KV モード
          • OBKV-Table Java開発ガイド
          • テーブルデータ操作例
            • OBKV-Tableを使用したデータの挿入
            • OBKV-Tableを使用したデータのクエリ
            • OBKV-Tableを使用したデータの更新
            • OBKV-Tableを使用したデータの削除
          • OBKV Table Java 開発
            • OBKV-Table Javaクライアントを使用してクラスタに接続する
          • HBase データ操作例
            • OBKV-HBaseアプリケーション開発の概要
            • OBKV-HBaseデータ操作の例
      • インスタンス管理
        • インスタンス管理
          • インスタンスリストを表示
          • インスタンスワークベンチ概要
          • インスタンスの一時停止/起動
          • Unit 移行
        • インスタンステナント管理
          • テナントワークベンチ
          • テナントの作成
          • テナント仕様の変更
          • テナント名の変更
          • アクセスアドレスの追加
          • リソース分離管理
            • リソース分離の概要
            • リソースグループ管理
              • リソースグループの作成
              • リソースグループの表示
              • リソースグループの編集
              • リソースグループの削除
            • 分離ルールの管理
              • 分離ルールの作成
              • 分離ルールの表示
              • 分離ルールの編集
              • 分離ルールの削除
          • プライマリゾーンの変更
          • プロキシアドレスの最大接続数の変更
          • AI Function 組み込みモデルの有効化
          • テナントパフォーマンスモニタリング
            • テナント監視の概要
            • パフォーマンスと SQL 監視
            • トランザクション監視
            • ストレージとキャッシュの監視
            • Binlog サービスの監視
            • テナントのカスタム監視レポート
          • 診断
            • パフォーマンス監視データの表示
            • リアルタイム診断
              • SQL 診断
                • Top SQL
                • Slow SQL
                • 疑わしい SQL
                • 高リスク SQL
                • SQL の詳細
              • セッション管理
                • セッション管理
              • 最適化管理
                • 有効な Outline の管理
                • 最適化履歴の表示
              • SQL監査
          • パラメータ管理
            • テナントパラメータ管理
            • パラメータ一覧
            • パラメータテンプレートの説明
          • テナントの削除
          • データベースとアカウント管理
            • アカウントの作成
            • アカウントの管理
            • データベースの作成(MySQLのみ)
            • データベースの管理(MySQLのみ)
        • インスタンズパフォーマンスモニタリング
          • クラスタ監視の概要
          • クラスタデータベースのパフォーマンス監視
          • クラスタ多次元指標のパフォーマンス監視
          • クラスタホストのパフォーマンス監視
          • データベースプロキシ監視の詳細
          • データベースプロキシホスト監視の詳細
          • クロスクラウドネットワークのパフォーマンス監視
          • クラスタのカスタム監視レポート
        • データマージ
          • メジャーコンパクションの開始
          • メジャーコンパクション記録の表示
          • メジャーコンパクション時間の変更
        • インスタンスパラメータ管理
          • パラメータ管理
          • パラメータ一覧の説明
        • インスタンス設定の変更
          • コンピューティングの自動スケールアップを設定する
          • ストレージの自動拡張機能の有効化
          • クラスタインスタンスの構成変更履歴の表示
          • インスタンス設定の変更(従量課金)
          • デプロイプランの切り替え
        • スタンバイインスタンス管理
          • スタンバイインスタンスの概要
          • スタンバイインスタンスの作成
          • クロスクラウドスタンバイインスタンスの作成
          • プライマリ/スタンバイインスタンスワークベンチ
          • プライマリ/スタンバイ同期ポリシーの設定
          • プライマリ/スタンバイデータベースのグローバルアドレス設定
          • スタンバイデータベースの書き込みリクエスト自動ルーティングを設定する
          • プライマリ/スタンバイインスタンスの切り替え
          • ディザスタリカバリ切り替え
          • プライマリ/スタンバイインスタンスのデカップリング
          • スタンバイインスタンスの解放
        • インスタンスの解放
        • データベースプロキシ
          • データベースプロキシの概要
          • データベースプロキシ管理
          • ダイレクトロード
        • アラート管理
          • アラート管理
          • アラートルールの管理
            • アラートルールの作成
            • アラートルールの表示
            • アラートルールの編集
            • アラートルールの削除
          • アラート履歴の表示
          • アラートルールテンプレートの管理
            • トリガー条件テンプレートの作成
            • トリガー条件テンプレートの表示
            • トリガー条件テンプレートの編集
            • トリガー条件テンプレートのコピー
            • トリガー条件テンプレートの削除
          • アラーム抑制ルールの管理
            • アラートミュート規則の作成
            • アラートミュートルールの確認
            • アラートミュートルールの編集
            • アラートミュートルールの削除
          • アラート通知テンプレートの管理
            • アラート通知テンプレートの作成
            • アラート通知テンプレートの表示
            • アラート通知テンプレートの編集
            • アラート通知テンプレートのコピー
            • アラート通知テンプレートの削除
          • アラート連絡先管理
            • アラート連絡先の追加
            • アラート連絡先グループの追加
            • アラート連絡先の表示
            • アラート連絡先の編集
            • アラート連絡先の削除
            • Webhook アドレスの取得
          • カスタムアラートで利用可能なメトリック
        • バックアップとリカバリ
          • バックアップとリストアの概要
          • バックアップポリシー
          • 今すぐバックアップ
          • データバックアップ
          • リストアの開始
          • データリストア
          • インスタンスごみ箱内のバックアップデータのリストア
        • 診断
          • 性能監視データの表示
          • 容量診断
          • ワンクリック診断
            • ワンクリック診断の開始
            • ワンクリック診断レポートの表示
              • 異常イベント
              • リアルタイム診断
              • 最適化の推奨事項
              • 容量管理
              • セキュリティ管理
          • リアルタイム診断
            • SQL 診断
              • Top SQL
              • Slow SQL
              • 不審な SQL
              • 高リスク SQL
              • SQL 詳細
              • SQL 監視メトリクスリスト
            • セッション管理
              • セッション管理
            • リクエスト分析
              • リクエスト分析
          • ルート cause 診断
            • 異常イベントの表示
            • システム自律機能の有効化
          • SQL監査
          • マテリアライズドビュー分析
          • 最適化センター
            • 最適化の推奨事項
            • 有効な Outline の管理
            • SQL Review
            • 最適化履歴の表示
        • タグ管理
        • 読み取り専用レプリカ管理
          • 読み取り専用レプリカの概要
          • インスタンス読み取り専用レプリカ
            • インスタンスの読み取り専用レプリカを追加する
            • インスタンスの読み取り専用レプリカ関連情報の表示
            • 読み取り専用レプリカの構成変更管理
            • インスタンスの読み取り専用レプリカを削除
          • テナント読み取り専用レプリカ
            • テナントの読み取り専用レプリカを追加する
            • テナントの読み取り専用レプリカ関連情報の表示
            • テナントの読み取り専用レプリカの変更
            • テナントの読み取り専用レプリカの削除
        • JVM 環境依存サービス管理
      • データソース管理
        • データソース管理の概要
        • データソースの管理
        • ユーザー権限の説明
          • 互換性評価ユーザー権限
          • データ移行ユーザー権限
          • 性能評価ユーザー権限
          • データアーカイブのユーザー権限
          • データクリーンアップのユーザー権限
        • プライベート接続の選択
          • AWSエンドポイントの設定
          • Huawei Cloudエンドポイントの設定
          • Alibaba Cloud エンドポイントの設定
          • Azureエンドポイントの設定
          • プライベートIPアドレス範囲の説明
        • パブリック接続の選択
          • AWS インスタンスのホワイトリストへの追加
          • Huawei Cloudインスタンスのホワイトリストに追加する
          • Alibaba Cloudインスタンスの許可リストへの追加
          • Azureインスタンスのホワイトリストに追加する
      • データライフサイクル管理
        • データアーカイブ
        • データクリーンアップ
      • ゴミ箱管理
        • インスタンスごみ箱
        • データベーステーブルゴミ箱管理
          • 概要
          • インスタンスデータベース・テーブルのごみ箱
          • テナントのデータベース/テーブルごみ箱
    • トランザクション型インスタンスの使用
      • トランザクション型インスタンスの概要
      • インスタンスの作成
        • インスタンスの作成
        • OceanBase公式Webサイトからインスタンスを作成する
        • AWS Marketplaceでインスタンスを作成する
        • GCP Marketplaceでインスタンスを作成する
        • Huawei Cloud Marketを通じてインスタンスを作成する
        • アリババクラウドマーケットプレイスでインスタンスを作成する
        • Azure Marketplaceでインスタンスを作成する
      • インスタンスへの接続
        • MySQL モード
          • 接続方法の概要
          • 接続文字列の取得
            • 概要
            • AWS PrivateLinkを使用したデータベースへの接続
            • Azureプライベートネットワーク接続を使用してデータベースにアクセスする
            • Google Cloud Private Service Connectを使用した接続
            • AWSピアリング接続を使用してデータベースに接続する
            • Huawei Cloud VPC Endpointを使用した接続
            • Alibaba CloudのVPC接続を使用したデータベース接続
            • 公開IPアドレスを使用してデータベースに接続する
            • Huawei Cloudのピア接続を使用してデータベースに接続する
          • クライアントを介した接続
            • デスクトップ版ODCによるOceanBase Cloudデータベースへの接続
            • MySQLクライアントを使用してOceanBase Cloudデータベースに接続する
            • OBClientを使用してOceanBase Cloudデータベースに接続する
          • ドライバー/ORM フレームワークを介した接続
            • Java
              • SpringBootでOceanBase Cloudに接続するサンプルプログラム
              • SpringBatchでOceanBase Cloudに接続するサンプルプログラム
              • Spring JDBCによるOceanBase Cloudデータベース接続サンプルプログラム
              • SpringDataJPA による OceanBase Cloud への接続サンプルプログラム
              • HibernateによるOceanBase Cloudデータベース接続サンプルプログラム
              • MyBatisでOceanBase Cloudデータベースに接続するサンプルプログラム
              • MySQL Connector/J による OceanBase Cloud データベース接続サンプルプログラム
              • TestContainers JavaによるOceanBase Cloudデータベース接続サンプルプログラム
            • Python
              • mysqlclient による OceanBase Cloud への接続サンプルプログラム
              • PyMySQLでOceanBase Cloudに接続するサンプルプログラム
              • MySQL-connector-pythonでOceanBase Cloudに接続するサンプルプログラム
              • SQLAlchemyでOceanBase Cloudに接続するサンプルプログラム
              • DjangoでOceanBase Cloudに接続するサンプルプログラム
              • peeweeを使用したOceanBase Cloud接続サンプルプログラム
            • C
              • MySQL Connector/C による OceanBase Cloud クラウドデータベース接続サンプルプログラム
            • Go
              • Go-SQL-Driver/MySQL で OceanBase Cloud に接続するサンプルプログラム
              • GORMでOceanBase Cloudに接続するサンプルプログラム
            • PHP
              • EXTドライバーを使用したOceanBase Cloud接続サンプルプログラム
              • MySQLiドライバーを使用してOceanBase Cloudに接続する
              • PDOドライバーを使用したOceanBase Cloudへの接続
            • Rust
              • RustでOceanBase Cloudに接続するサンプルプログラム
              • SeaORM による OceanBase Cloud クラウドデータベース接続サンプルプログラム
            • Ruby
              • ActiveRecordを使用したOceanBase Cloud接続サンプルプログラム
              • mysql2を使用したOceanBase Cloud接続サンプルプログラム
              • Sequelを使用したOceanBase Cloud接続サンプルプログラム
          • データベース接続プールの使用
            • データベース接続プールの設定
            • Tomcat接続プールでOceanBaseデータベースに接続するサンプルプログラム
            • C3P0接続プールでOceanBaseデータベースに接続するサンプルプログラム
            • Proxool接続プールを使用したOceanBaseデータベース接続サンプルプログラム
            • HikariCP接続プールでOceanBaseデータベースに接続するサンプルプログラム
            • DBCP接続プールでOceanBaseデータベースに接続するサンプルプログラム
            • Commons Pool による OceanBase データベース接続サンプルプログラム
            • Druid接続プールでOceanBaseデータベースに接続するサンプルプログラム
        • Oracle モード
          • 接続方法の概要
          • 接続文字列の取得
            • 概要
            • AWS PrivateLinkを使用してデータベースに接続する
            • Azureプライベートネットワーク接続を使用してデータベースにアクセスする
            • Google Cloud Private Service Connectを使用した接続
            • AWSピアリング接続を使用してデータベースに接続する
            • Huawei Cloud VPCエンドポイントを使用した接続
            • 公開IPアドレスを使用してデータベースに接続する
          • クライアントを介した接続
            • OBClientを使用してOceanBase Cloudに接続する
            • デスクトップ版ODCを使用してOceanBase Cloudデータベースに接続する
          • ドライバー/ORM フレームワークを介した接続
            • Java
              • OceanBase Connector/J による OceanBase Cloud クラウドデータベース接続サンプルプログラム
              • SpringBootでOceanBase Cloudに接続するサンプルプログラム
              • SpringBatchでOceanBase Cloudに接続するサンプルプログラム
              • Spring JDBCによるOceanBase Cloudデータベース接続サンプルプログラム
              • SpringDataJPAでOceanBase Cloudに接続するサンプルプログラム
              • HibernateによるOceanBase Cloudデータベース接続サンプルプログラム
              • MyBatisでOceanBase Cloudデータベースに接続するサンプルプログラム
              • JfinalによるOceanBase Cloudデータベース接続サンプルプログラム
            • Python
              • PythonドライバーによるOceanBase CloudOracleモードへの接続ガイド
            • C/C++
              • OceanBase Connector/C による OceanBase Cloud への接続サンプルプログラム
              • OceanBase Connector/ODBC による OceanBase Cloud クラウドデータベース接続サンプルプログラム
              • SqlSugarでOceanBase Cloudに接続するサンプルプログラム
          • データベース接続プールの使用
            • データベース接続プールの設定
            • Tomcat接続プールでOceanBase Cloudに接続するサンプルプログラム
            • C3P0接続プールでOceanBase Cloudに接続するサンプルプログラム
            • Proxool接続プールを使用したOceanBase Cloudデータベース接続サンプルプログラム
            • HikariCP接続プールでOceanBase Cloudに接続するサンプルプログラム
            • DBCP接続プールを使用してOceanBase Cloudに接続するサンプルプログラム
            • Commons Pool による OceanBase Cloud データベース接続サンプルプログラム
            • Druid接続プールでOceanBase Cloudに接続するサンプルプログラム
      • 開発リファレンス
        • MySQL モード
          • データオブジェクトの設計
            • データベースの作成
            • テーブルグループの作成
            • テーブルの作成
            • インデックスの作成
            • 外部テーブルの作成
          • データの書き込み
            • データの挿入
            • データの更新
            • データの削除
            • データの置換
            • テストデータの一括生成
          • データの読み取り
            • シングルテーブルクエリ
            • 複数テーブルの結合
              • INNER JOIN
              • FULL JOIN
              • LEFT JOIN
              • RIGHT JOIN
              • サブクエリ
              • ラテラル派生テーブル
            • クエリでの演算子と関数の使用
              • クエリでの算術演算子の使用
              • クエリでの数値関数の使用
              • クエリでの文字列連結演算子の使用
              • クエリでの文字列関数の使用
              • クエリでの時間関数の使用
              • クエリでの型変換関数の使用
              • クエリでの集約関数の使用
              • クエリでのNULL関連関数の使用
              • クエリでのCASE条件演算子の使用
              • クエリ結果のロック SELECT FOR UPDATE
              • クエリ結果のロック LOCK IN SHARE MODE
            • DBLinkを使用したクエリの実行
            • 集合演算
          • トランザクション
            • トランザクション管理の概要
            • トランザクションの開始
            • セーブポイント
              • セーブポイントの設定
              • トランザクションを特定のセーブポイントまでロールバック
              • セーブポイントの解放
            • トランザクションのコミット
            • トランザクションのロールバック
        • Oracle モード
          • データオブジェクトの設計
            • テーブルグループの作成
            • テーブルの作成
            • インデックスの作成
            • 外部テーブルの作成
          • データの書き込み
            • データの挿入
            • データの更新
            • データの削除
            • データの置換
            • テストデータの一括生成
          • データの読み取り
            • 単一テーブルのクエリ
            • 複数テーブルの結合
              • INNER JOIN
              • FULL JOIN
              • LEFT JOIN
              • RIGHT JOIN
              • サブクエリ
              • ラテラル派生テーブル
            • クエリでの演算子と関数の使用
              • クエリでの算術演算子の使用
              • クエリでの数値関数の使用
              • クエリにおける文字列連結演算子の使用
              • クエリでの文字列関数の使用
              • クエリにおける時刻関数の使用
              • クエリでの型変換関数の使用
              • クエリにおける集約関数の使用
              • クエリでのNULL関連関数の使用
              • クエリでのCASE関数の使用
              • SELECT ... FOR UPDATEステートメントを使用してクエリ結果をロックする
            • DBLinkを使用したクエリの実行
            • 集合演算
          • トランザクション
            • トランザクション管理の概要
            • トランザクションの開始
            • セーブポイント
              • セーブポイントの設定
              • トランザクションを特定のセーブポイントまでロールバック
            • トランザクションのコミット
            • トランザクションのロールバック
      • インスタンス管理
        • インスタンス管理
          • インスタンスリストの表示
          • インスタンスダッシュボードの概要
          • インスタンスの一時停止・再開
          • Unit移行
        • インスタンステナント管理
          • テナントダッシュボード
          • テナントの作成
          • テナント仕様の変更
          • テナント名の変更
          • アクセスアドレスの追加
          • リソース分離管理
            • リソース分離の概要
            • リソースグループ管理
              • リソースグループの作成
              • リソースグループの表示
              • リソースグループの編集
              • リソースグループの削除
            • 分離ルールの管理
              • 分離ルールの作成
              • 分離ルールの表示
              • 分離ルールの編集
              • 分離ルールの削除
          • プライマリゾーンの変更
          • プロキシアドレスの最大接続数の変更
          • AI Functionの組み込みモデルを有効にする
          • テナントパフォーマンスモニタリング
            • テナント監視の概要
            • パフォーマンスとSQL監視
            • トランザクション監視
            • ストレージとキャッシュの監視
            • Binlogサービス監視
            • テナントのカスタムモニタリングレポート
          • 診断
            • リアルタイム診断
              • SQL 診断
                • Top SQL
                • スローSQL
                • 疑わしいSQL
                • ハイリスクSQL
              • SQL監査
          • パラメータ管理
            • テナントパラメータの管理
            • パラメータ一覧の説明
            • パラメータテンプレートの説明
          • テナントの削除
          • データベースとアカウント管理
            • アカウントの作成
            • アカウントの管理
            • データベースの作成(MySQL互換モードのみ)
            • データベースの管理 (MySQL互換モードのみ)
        • インスタンズパフォーマンスモニタリング
          • クラスタ監視の概要
          • クラスタデータベースのパフォーマンス監視
          • クラスタ多次元指標のパフォーマンス監視
          • クラスタホストのパフォーマンス監視
          • データベースプロキシの監視詳細
          • データベースプロキシホストの監視詳細
          • クロスクラウドネットワークパフォーマンス監視
          • クラスタのカスタムモニタリングレポート
        • データマージ
          • メジャーコンパクションの開始
          • メジャーコンパクションレコードの表示
          • メジャーコンパクションの開始時刻を変更する
        • インスタンスパラメータ管理
          • パラメータ管理
          • パラメータ一覧の説明
        • インスタンス設定の変更
          • ストレージの自動拡張を設定する
          • クラスタインスタンスの構成変更履歴を表示する
          • インスタンス構成の変更 (従量課金)
          • デプロイプランの切り替え
        • スタンバイインスタンス管理
          • スタンバイインスタンスの概要
          • スタンバイインスタンスの作成
          • クロスクラウドスタンバイインスタンスの作成
          • プライマリ/スタンバイインスタンスの管理画面
          • プライマリ/スタンバイデータベースのグローバルアドレスの設定
          • スタンバイデータベースの書き込みリクエストの自動ルーティングを設定する
          • プライマリ/スタンバイインスタンスの切り替え
          • ディザスタリカバリフェイルオーバー
          • プライマリ/スタンバイインスタンスの分離
          • スタンバイインスタンスのリリース
        • インスタンスのリリース
        • データベースプロキシ
          • データベースプロキシの概要
          • データベースプロキシの管理
          • ダイレクトロード
        • アラート管理
          • アラート管理
          • アラートルールの管理
            • アラートルールの作成
            • アラートルールの表示
            • アラートルールの編集
            • アラートルールの削除
          • アラート履歴の表示
          • アラートルールテンプレートの管理
            • トリガー条件テンプレートの作成
            • トリガー条件テンプレートの表示
            • トリガー条件テンプレートの編集
            • トリガー条件テンプレートのコピー
            • トリガー条件テンプレートの削除
          • アラーム抑制ルールの管理
            • アラートミュートルールの作成
            • アラートミュートルールの表示
            • アラートミュートルールの編集
            • アラートミュートルールの削除
          • アラート通知テンプレートの管理
            • アラート通知テンプレートの作成
            • アラート通知テンプレートの表示
            • アラート通知テンプレートの編集
            • アラート通知テンプレートのコピー
            • アラート通知テンプレートの削除
          • アラート連絡先管理
            • アラート連絡先の追加
            • アラート連絡先グループの追加
            • アラート連絡先の表示
            • アラート連絡先の編集
            • アラート連絡先の削除
            • Webhook アドレスの取得
          • カスタムアラートで利用可能なモニタリング指標
        • バックアップとリカバリ
          • バックアップ・リストアの概要
          • バックアップポリシー
          • 今すぐバックアップ
          • データバックアップ
          • データ復元の開始
          • データ復元
          • インスタンスのごみ箱からデータバックアップを復元する
        • 診断
          • パフォーマンス監視データの表示
          • 容量診断
          • ワンクリック診断
            • ワンクリック診断の開始
            • ワンクリック診断レポートの表示
              • 異常イベント
              • リアルタイム診断
              • 最適化提案
              • 容量管理
              • セキュリティ管理
          • リアルタイム診断
            • SQL 診断
              • Top SQL
              • スローSQL
              • 疑わしいSQL
              • ハイリスクSQL
              • SQLの詳細
              • SQLモニタリングメトリクス一覧
            • セッション管理
              • セッション管理
            • リクエスト分析
              • リクエスト分析
          • ルート cause 診断
            • 例外イベントの表示
            • システム自律性の有効化
          • SQL監査
          • マテリアライズドビューの分析
          • 最適化センター
            • 最適化の提案
            • 有効なアウトラインの管理
            • SQL Review
            • 最適化履歴の表示
        • タグの管理
        • 読み取り専用レプリカ管理
          • 読み取り専用レプリカの概要
          • インスタンス読み取り専用レプリカ
            • インスタンスに読み取り専用レプリカを追加する
            • インスタンスの読み取り専用レプリカ関連情報の表示
            • 読み取り専用レプリカの構成管理
            • インスタンスの読み取り専用レプリカを削除する
          • テナント読み取り専用レプリカ
            • テナントに読み取り専用レプリカを追加する
            • テナントの読み取り専用レプリカ関連情報の表示
            • テナントの読み取り専用レプリカを変更する
            • テナントの読み取り専用レプリカを削除する
        • JVM環境依存サービスの管理
      • データソース管理の概要
      • データソース管理
        • プライベート接続
          • Google Cloudエンドポイントの設定
        • パブリック接続
          • Google Cloudインスタンスのアローリストに追加する
      • データライフサイクル管理
        • データライフサイクル管理の概要
        • データアーカイブ
        • データのクリーンアップ
        • アーカイブ設定の説明
      • ゴミ箱管理
        • インスタンスごみ箱
        • データベーステーブルゴミ箱管理
          • 概要
          • インスタンスのデータベース・テーブルのごみ箱
          • テナントデータベース・テーブルのごみ箱
    • 分析型インスタンスの使用
      • 分析型インスタンスの概要
      • OceanBase APのコア機能
      • インスタンスの作成
      • インスタンスへの接続
        • 接続方法の概要
        • 接続文字列の取得
          • 概要
          • AWS PrivateLinkを使用した接続
          • Huawei Cloud VPCエンドポイントを使用してデータベースに接続する
          • パブリックアドレスを使用してデータベースに接続する
        • クライアントを介した接続
          • デスクトップ版ODCによるOceanBase Cloudデータベースへの接続
          • MySQLクライアントを使用してOceanBase Cloudに接続する
          • OBClientを使用してOceanBase Cloudに接続する
        • ドライバー/ORM フレームワークを介した接続
          • Java
            • SpringBootによるOceanBase Cloudデータベースへの接続
            • SpringBatchによるOceanBase Cloudデータベースへの接続
            • Spring JDBCによるOceanBase Cloudデータベースへの接続
            • SpringJPAでOceanBase Cloudに接続する
            • HibernateによるOceanBase Cloudデータベースへの接続
            • MyBatisによるOceanBase Cloudデータベースへの接続
            • MySQL Connector/J を使用して OceanBase Cloud に接続する
          • Python
            • mysqlclient による OceanBase Cloud データベース接続サンプルプログラム
            • PyMySQLでOceanBase Cloudに接続するサンプルプログラム
            • MySQL Connector/Pythonを使用してOceanBase Cloudデータベースに接続する
          • C
            • MySQL Connector/Cを使用してOceanBase Cloudに接続する
          • Go
            • Go-SQL-Driver/MySQLを使用してOceanBase Cloudデータベースに接続する
          • PHP
            • PHPを使用してOceanBase Cloudに接続する
        • データベース接続プールの使用
          • データベース接続プールの設定
          • Tomcat接続プールでOceanBaseデータベースに接続するサンプルプログラム
          • C3P0接続プールでOceanBaseデータベースに接続するサンプルプログラム
          • Proxool接続プールを使用したOceanBaseデータベース接続サンプルプログラム
          • HikariCP接続プールでOceanBaseデータベースに接続するサンプルプログラム
          • DBCP接続プールでOceanBaseデータベースに接続するサンプルプログラム
          • Commons Pool による OceanBase データベース接続サンプルプログラム
          • Druid接続プールを使用したOceanBaseデータベース接続サンプルプログラム
      • データテーブル設計
        • データテーブルの概要
        • データテーブル設計のベストプラクティス
          • Unit 1:ストレージ構造とクエリパフォーマンスを最適化するための戦略のベストプラクティス
          • Unit 2:特殊インデックスの選択と作成のベストプラクティス
      • データのエクスポート
      • データ加工
      • クエリアクセラレーション
        • 統計情報
        • マテリアライズドビューによるクエリの高速化
        • クエリ並列度の選択
      • インスタンス管理
        • インスタンスのダッシュボードを表示する
        • インスタンス構成の変更
        • ストレージの自動拡張を設定する
        • プライマリゾーンの変更
        • パラメータの管理
        • バックアップとリカバリ
          • バックアップ・リストアの概要
          • バックアップポリシー
          • 即時バックアップ
          • データバックアップ
          • リストアの開始
          • データ復元
        • パフォーマンスモニタリング
          • クラスタ監視の概要
          • インスタンスデータベースのパフォーマンス監視を表示する
          • インスタンスホストのパフォーマンス監視を表示する
        • データマージ
          • メジャーコンパクションの開始
          • メジャーコンパクションレコードの表示
          • マージ時間の変更
        • データベースプロキシ
          • データベースプロキシの概要
          • データベースプロキシ管理
          • ダイレクトロード
        • アラート管理
          • 概要
          • アラートルールの管理
            • アラートルールの作成
            • アラートルールの表示
            • アラートルールの編集
            • アラートルールの削除
          • アラート履歴の表示
          • アラートルールテンプレートの管理
            • トリガー条件テンプレートの作成
            • トリガー条件テンプレートの表示
            • トリガー条件テンプレートの編集
            • トリガー条件テンプレートのコピー
            • トリガー条件テンプレートの削除
          • アラーム抑制ルールの管理
            • アラート抑止ルールの作成
            • アラート抑止ルールの表示
            • アラート抑止ルールの編集
            • アラート抑止ルールの削除
          • アラート通知テンプレートの管理
            • アラート通知テンプレートの作成
            • アラート通知テンプレートの表示
            • アラート通知テンプレートの編集
            • アラート通知テンプレートのコピー
            • アラート通知テンプレートの削除
          • アラート連絡先管理
            • アラート連絡先の追加
            • アラート連絡先グループの追加
            • アラート連絡先の表示
            • アラート連絡先の編集
            • アラート連絡先の削除
            • Webhook アドレスの取得
          • カスタムアラートで利用可能な監視メトリクス
        • 診断
          • パフォーマンス監視データの表示
          • 容量診断
          • リアルタイム診断
            • SQL 診断
              • Top SQL
              • スローSQL
              • 疑わしいSQL
              • ハイリスクSQL
              • SQLの詳細
              • SQLモニタリングメトリクス一覧
            • セッション管理
              • セッション管理
            • 最適化センター
              • 有効なアウトラインの管理
              • 最適化履歴の表示
            • リクエスト分析
              • リクエスト分析
        • インスタンスの一時停止・再開
        • インスタンスの解放
        • データベースとアカウント管理
          • アカウントの作成
          • データベースの作成
          • データベースの管理
        • タグの管理
      • データソース管理の概要
      • データライフサイクル管理
        • データアーカイブ
        • データのクリーンアップ
      • パフォーマンス診断とチューニング
        • 診断の実践:DBMS_XPLANシステムパッケージを使用したパフォーマンス診断
        • 診断の実践:SQL_PLAN_MONITORを使用したパフォーマンス問題の分析
        • AP性能分析関連ビュー
      • パフォーマンステスト
      • エコシステム統合
      • ゴミ箱管理
        • クラスタインスタンスのごみ箱
        • データベーステーブルゴミ箱管理
          • 概要
          • インスタンスのデータベース・テーブルのごみ箱
    • キーバリュー型インスタンスの使用
      • Table モデルの使用
        • インスタンスの作成
        • インスタンス管理
          • インスタンス管理
            • インスタンスリストの表示
            • クラスタインスタンスのダッシュボード概要
            • インスタンスの一時停止と起動
            • インスタンスのリリース
          • インスタンステナント管理
            • テナントの作成
            • テナント仕様の変更
            • テナント名の変更
            • テナントの削除
            • テナントの概要
            • リソース分離管理
              • リソース分離の概要
              • リソースグループ管理
                • リソースグループの作成
                • リソースグループの表示
                • リソースグループの編集
                • リソースグループの削除
              • 分離ルールの管理
                • 分離ルールの作成
                • 分離ルールの表示
                • 隔離ルールの編集
                • 隔離ルールの削除
            • テナントパフォーマンスモニタリング
              • テナント監視の概要
              • パフォーマンスとSQLの監視
              • トランザクション監視
              • ストレージとキャッシュの監視
              • OBKV-Table
              • テナントのカスタムモニタリングレポート
            • 診断
              • Top SQL
            • パラメータ管理
              • テナントパラメータの管理
              • パラメータ一覧の説明
            • データベースとアカウント処理
              • アカウントの作成と管理
              • データベースの作成
              • データベースの管理
            • プライマリゾーンの変更
          • インスタンズパフォーマンスモニタリング
            • クラスタ監視の概要
            • クラスタデータベースのパフォーマンス監視
            • クラスタ多次元指標のパフォーマンス監視
            • クラスタホストのパフォーマンス監視
            • インスタンスのカスタムモニタリングレポート
          • データマージ
            • メジャーコンパクションの開始
            • メジャーコンパクションレコードの表示
            • メジャーコンパクションの実行時刻の変更
          • インスタンスパラメータ管理
            • パラメータ管理の概要
            • パラメータ管理リスト
          • インスタンス設定の変更
            • ストレージの自動拡張を設定する
            • 設定変更履歴の表示
            • 構成の変更
            • デプロイメントモードの切り替え
          • データベースプロキシ
            • データベースプロキシの概要
            • データベースプロキシの管理
          • アラート管理
            • 概要
            • アラートルールの管理
              • アラートルールの作成
              • アラートルールの表示
              • アラートルールの編集
              • アラートルールの削除
            • アラート履歴の表示
            • アラートルールテンプレートの管理
              • トリガー条件テンプレート管理機能一覧
              • アラートテンプレートの作成
              • アラートテンプレートの表示
              • アラートテンプレートの編集
              • アラートテンプレートのコピー
              • アラートテンプレートの削除
            • アラーム抑制ルールの管理
              • アラート抑止ルールの作成
              • アラート抑止ルールの表示
              • アラートミュートルールの編集
              • アラート抑止ルールの削除
            • アラート連絡先管理
              • アラート連絡先の追加
              • アラート連絡先グループの追加
              • アラート連絡先の表示
              • アラート連絡先の編集
              • アラート連絡先の削除
              • Webhookアドレスの取得
            • カスタムアラートで利用可能なモニタリング指標
          • バックアップとリカバリ
            • バックアップ・リストアの概要
            • バックアップポリシー
            • 即時バックアップ
            • データバックアップ
            • リストアの開始
            • データ復元
          • 診断
            • パフォーマンス監視データの表示
            • Top SQL
            • 容量診断
            • リクエスト分析
          • タグの管理
          • ゴミ箱管理
            • インスタンスのごみ箱を表示する
            • データベーステーブルゴミ箱管理
              • 概要
              • インスタンスレベルのごみ箱
              • テナントレベルのごみ箱
      • キーバリュー型インスタンスを試す
        • インスタンスの作成
        • テナントの作成
        • アカウントの作成
        • OBKV-HBaseデータ操作の例
      • HBase モデルの使用
        • OBKV-HBaseの概要
        • インスタンスの作成
        • OBKV-HBase を使用したアプリケーション開発
          • OBKV-HBaseクライアントを使用してクラスタに接続する
        • インスタンス管理
          • インスタンス管理
            • インスタンス一覧の表示
            • クラスタインスタンスの概要
            • インスタンスの一時停止と再開
            • インスタンスのリリース
          • インスタンステナント管理
            • テナントの作成
            • テナント仕様の変更
            • テナント名の変更
            • テナントの削除
            • テナントの概要
            • リソース分離管理
              • 概要
              • リソースグループ管理
                • リソースグループの作成
                • リソースグループの表示
                • リソースグループの編集
                • リソースグループの削除
              • 分離ルールの管理
                • 隔離ルールの作成
                • 分離ルールの表示
                • 隔離ルールの編集
                • 隔離ルールの削除
            • テナントパフォーマンスモニタリング
              • 概要
              • パフォーマンスとSQLの監視詳細を表示する
              • トランザクション監視の詳細を表示する
              • ストレージとキャッシュの監視詳細を表示する
              • OBKV-HBase
              • テナントのカスタムモニタリングパネルを作成する
            • 診断
              • Top SQL
            • パラメータ管理
              • テナントパラメータの管理
              • テナントパラメータ
            • データベースとアカウント処理
              • アカウントの作成と管理
              • データベースの作成
              • データベースの管理
            • プライマリゾーンの変更
          • インスタンズパフォーマンスモニタリング
            • 概要
            • インスタンス内のデータベースのパフォーマンス監視
            • クラスタの多次元指標によるパフォーマンス監視
            • インスタンス内のホストのパフォーマンスを監視する
            • インスタンスのカスタムモニタリングパネルを作成する
          • データマージ
            • メジャーコンパクションの開始
            • メジャーコンパクションレコードの表示
            • メジャーコンパクションの実行時間の変更
          • インスタンスパラメータ管理
            • パラメータ管理の概要
            • クラスタインスタンスのパラメータ
          • インスタンス設定の変更
            • ストレージの自動拡張を設定する
            • 設定変更履歴の表示
            • 構成の変更
            • デプロイメントモードの切り替え
          • データベースプロキシ
            • 概要
            • データベースプロキシの管理
          • アラート管理
            • 概要
            • アラートルールの管理
              • アラートルールの作成
              • アラートルールの表示
              • アラートルールの編集
              • アラートルールの削除
            • アラート履歴の表示
            • アラートルールテンプレートの管理
              • トリガー条件テンプレート管理機能一覧
              • アラートテンプレートの作成
              • アラートテンプレートの表示
              • アラートテンプレートの編集
              • アラートテンプレートのコピー
              • アラートテンプレートの削除
            • アラーム抑制ルールの管理
              • アラート抑止ルールの作成
              • アラート抑止ルールの表示
              • アラート抑止ルールの編集
              • アラートミュートルールの削除
            • アラート連絡先管理
              • アラート連絡先の追加
              • アラート連絡先グループの追加
              • アラート連絡先の表示
              • アラート連絡先の編集
              • アラート連絡先の削除
              • Webhookアドレスの取得
            • カスタムアラート用の監視メトリクス
          • バックアップとリカバリ
            • バックアップ・リストアの概要
            • バックアップポリシー
            • 即時バックアップ
            • データバックアップ
            • リストアの開始
            • データ復元
          • 診断
            • パフォーマンス監視データの表示
            • Top SQL
            • 容量診断
            • リクエスト分析
          • タグの管理
          • ゴミ箱管理
            • クラスタインスタンスのごみ箱
            • データベーステーブルゴミ箱管理
              • 概要
              • インスタンスデータベース・テーブルのごみ箱
              • テナントデータベース・テーブルのごみ箱
        • データソース管理の概要
        • OBKV-HBaseの性能テスト
      • 接続文字列の取得
        • 概要
        • Huawei Cloud VPCエンドポイントを使用したOBKVへの接続
        • 公開IPアドレスを使用してOBKVに接続する
  • AI
    • AI サービス
      • AIサービスの概要
      • クイックスタート
      • AI API Keyの管理
      • AIモデルの使用
      • OceanBase MaaSを使用したClaude Codeの利用
      • OceanBase MaaSを使用したCodex CLIとCodex Appの利用
      • メモリ機能の使用
      • 組み込みモデル一覧
      • AI API
        • アクセスの仕方
        • AI サービス API インターフェース
          • AI API一覧
          • Anthropic 互換インターフェース
            • List Anthropic Models - Anthropicモデルの一覧を取得する
            • Create a Message - Anthropic メッセージの作成
            • Create a Message (Default Base) - Anthropic Messages
          • OpenAI 互換インターフェース
            • List Models - モデルリストの取得
            • Create Chat Completion - OpenAI チャット補完
            • Create Embedding - OpenAI Embeddings
            • Rerank - リランキング
            • Reranks - リランキング
            • Create Response - OpenAI Responses
          • Vertex AI 互換インターフェース
            • generateContent - Vertex AIによるコンテンツ生成
            • streamGenerateContent - Vertex AI ストリーミングコンテンツ生成
          • 画像とビデオ生成 API
            • Create Image Generation - 画像の生成
            • Create Video Generation - 動画生成タスクの作成
            • Retrieve Task Status - 非同期タスクのステータスを取得する
          • 画像生成モデル API
            • gpt-image-2によるテキストから画像への変換
            • gpt-image-2 Image Editing - 画像編集
            • gemini-3-pro-imageによるテキストから画像への変換
            • gemini-3-pro-imageによる画像から画像への変換/画像編集
          • OpenAI 互換のバッチとファイル API
            • Upload file - ファイルのアップロード
            • List files - バッチファイルの一覧を取得する
            • Retrieve file - バッチファイル情報の取得
            • Delete file - バッチファイルの削除
            • Get file content - バッチファイルの内容を取得する
            • Get file content (POST) - バッチファイルの内容を取得する
            • Create batch - バッチタスクの作成
            • List batches - バッチタスクの一覧を取得する
            • Retrieve batch - バッチタスクの状態を取得する
            • Retrieve batch (POST) - バッチタスクの取得
            • Cancel batch - バッチタスクのキャンセル
          • Memory API
            • listSpaces - メモリースペースをページネーションで一覧表示する
            • createSpace - メモリースペースを作成する
            • getSpace - 指定されたスペースの詳細を取得する
            • updateSpace - スペース名と説明を更新する
            • deleteSpace - スペースの削除
            • extractMemories - 対話メッセージからメモリを抽出する
            • listMemories - スペース内のメモリを一覧表示する
            • addMemory - メモリへの直接書き込み
            • getMemory - 単一のメモリを取得する
            • updateMemory - 単一のメモリ内容を更新する
            • deleteMemory - 単一のメモリを削除する
            • distillMemory - 対話からエクスペリエンスを抽出する
            • searchExperiences - エクスペリエンスの検索
            • getExperience - 単一のエクスペリエンスを取得する
            • deleteExperience - 単一のエクスペリエンスを削除する
            • feedbackExperiences - エクスペリエンスのフィードバック(高評価 / 低評価)
            • setExperienceObsolescence - エクスペリエンスを廃止としてマークまたはマーク解除する
            • combinedSearch - 統合検索(メモリ + エクスペリエンス)
    • OceanBase OAgent
      • OceanBase OAgentの概要
      • OceanBase OAgentのクイックスタート
      • チャネルの設定
      • スキルの設定
      • OceanBase OAgentトークン使用状況の確認
  • データ移行とインポート
    • データ移行とインポートのソリューション
    • データ評価と移行のクイックスタート
    • 互換性評価
      • 互換性評価の概要
      • オンライン評価の実行
      • オフライン評価の実行
      • 互換性評価タスクの管理
        • 互換性評価タスクの表示
        • 互換性評価レポートの表示とダウンロード
        • 互換性評価タスクの一時停止
        • 互換性評価タスクの削除
      • アップロードファイルの取得
      • PrivateLinkの設定
      • IPアドレスのホワイトリストへの追加
    • データソースの管理
      • データソースの新規作成
      • データソースの管理
      • ユーザー権限
        • 互換性評価ユーザー権限
        • データ移行に必要なユーザー権限
        • パフォーマンス評価ユーザー権限
        • データアーカイブユーザー権限
        • データクリーンアップユーザー権限
      • プライベート接続
        • AWSエンドポイントの設定
        • Huawei Cloudエンドポイントの設定
        • Alibaba Cloudエンドポイントの設定
        • Azureエンドポイントの設定
        • プライベートIPアドレスセグメントの説明
      • パブリック接続
        • AWSインスタンスの許可リストに追加する
        • Huawei Cloudインスタンスの許可リストに追加する
        • Alibaba Cloudインスタンスの許可リストに追加する
        • Azureインスタンスの許可リストに追加する
      • ピアリング接続
        • AWSデータサービスのピアリング接続を設定する
        • Huawei Cloudデータサービスのピアリング接続を設定する
        • Alibaba Cloudデータサービスのピアリング接続を設定する
        • Google Cloudデータサービスのピアリング接続を設定する
    • データ移行
      • データ移行の概要
      • データ移行の仕様説明
      • データ移行インスタンスの購入
      • MySQLデータベースのデータをOceanBaseデータベースのMySQL互換モードに移行する
      • OceanBaseデータベースのMySQL互換モードのデータをMySQLデータベースに移行する
      • OceanBaseデータベースの同一互換モード間でのデータ移行
      • OceanBaseデータベースの異なる互換モード間でのデータ移行
      • OracleデータベースのデータをOceanBaseデータベースのOracle互換モードに移行する
      • OceanBaseデータベースのOracle互換モードのデータをOracleデータベースに移行する
      • 双方向同期タスクの設定
      • OceanBaseデータベースのデータをKafkaに移行する
      • TiDBデータベースからOceanBaseデータベースのMySQL互換モードへのデータ移行
      • OceanBaseデータベースのMySQL互換モードからTiDBデータベースへの増分データ移行
      • PostgreSQLデータベースのデータをOceanBaseデータベースに移行する
      • OceanBaseデータベースの増分データをPostgreSQLデータベースに移行する
      • Lindorm/HBaseデータベースのデータをOceanBaseデータベースのHBase API互換モードに移行する
      • OceanBaseデータベースのHBase API互換モードからLindorm/HBaseデータベースへの増分データ移行
      • OceanBaseデータベースのデータをRocketMQに移行する
      • OceanBaseデータベースのデータをDataHubに移行する
      • OceanBaseデータベースのMySQL互換モードのデータをADBに移行する
      • PolarDB-X 2.0データベースのデータをOceanBaseデータベースのMySQL互換モードに移行する
      • データ移行タスクの管理
        • データ移行タスクの詳細を表示する
        • データ移行タスクの名前を変更する
        • 移行オブジェクトの表示と変更
        • パラメータの確認と変更
        • アラートの設定
        • ラベルによるデータ移行タスクの管理
        • インテリジェント診断
        • データ移行タスクの開始、一時停止、および再開
        • データ移行タスクのクローン
        • データ移行タスクの終了と解放
      • 機能紹介
        • DML/DDLのカスタム設定
        • DDL同期範囲
        • SQL条件によるデータのフィルタリング
        • データベース名とテーブル名の変更
        • 増分同期の開始時点の設定
        • 構造移行の操作説明
        • マッチングルールの設定と変更
        • ワイルドカードルールの説明
        • 移行対象オブジェクトのインポート
        • 競合データのダウンロード
        • Topicの変更
        • 列フィルタリング
        • データ形式の説明
        • パーティション設定
      • Alibaba Cloudアカウントの権限付与
      • テーブルオブジェクトのSQLクエリ
      • Online DDLツールの適用について
      • トリガーの作成
      • セルフマネージドPostgreSQLインスタンスのログレベルを変更する
      • 増分移行のサポート対象 DDL 操作と制限
        • Aurora MySQLデータベースクラスタからOceanBaseデータベースのMySQL互換モードテナントへのDDL同期の概要
        • OceanBaseデータベースのMySQL互換モードテナントからAurora MySQLデータベースクラスタへのDDL同期
        • OceanBaseデータベースのMySQL互換モードテナント間のDDL同期
        • OracleデータベースからOceanBaseデータベースのOracle互換モードテナントへのDDL同期
        • OceanBaseデータベースのOracle互換モードテナントからOracleデータベースへのDDL同期
        • OceanBaseデータベースのOracle互換モードにおけるテナント間のDDL同期
        • OceanBaseデータベースからKafkaへのDDL同期
    • データサブスクリプション
      • データサブスクリプションタスクの作成
      • データサブスクリプションタスクの管理
        • データサブスクリプションタスクの詳細を表示する
        • サブスクリプション情報の設定
        • データサブスクリプションタスクの名称を変更する
        • サブスクリプションオブジェクトの表示と変更
        • データサブスクリプションパラメータの表示
        • データサブスクリプションのアラートを設定する
        • データサブスクリプションタスクの開始、一時停止、および再開
        • データサブスクリプションタスクのクローン
        • データサブスクリプションタスクの解放
      • データサブスクリプションのプライベート接続を管理する
      • サブスクリプションの消費設定
      • メッセージ形式の説明
    • データ検証
      • データ検証の概要
      • 検証タスクの新規作成
      • データ検証タスクの管理
        • データ検証タスクの詳細を表示する
        • 検証オブジェクトの表示と変更
        • データ検証パラメータの表示と変更
        • ラベルを使用したデータ検証タスクの管理
        • データ検証タスクの開始、一時停止、および再開
        • データ検証タスクのクローン
        • データ検証タスクの解放
      • 機能紹介
        • 検証オブジェクトのインポート
        • 検証オブジェクトの名前変更
        • SQL条件を使用した検証オブジェクトのフィルタリング
        • 検証オブジェクトのマッチングルールの設定
    • パフォーマンス評価
      • 概要
      • データベースインスタンスのトラフィックファイルを取得する
      • 完全なパフォーマンス評価タスクの新規作成
      • SQLファイル解析タスクの新規作成
      • SQLファイルリプレイタスクの新規作成
      • パフォーマンス評価タスクの管理
        • パフォーマンス評価タスクの詳細を表示する
        • パフォーマンス評価レポートの表示
        • パフォーマンス評価タスクの再試行と停止
        • パフォーマンス評価タスクの削除
      • データベースインスタンスの取得
      • アクセスキーを作成する
    • データのインポート
      • データのインポート
      • ダイレクトロード
      • データインポートでサポートされているファイル形式とエンコーディング形式
      • サンプルデータについて
    • Binlog
      • 概要
      • Binlogサービスの購入
      • Binlog サービスの管理
        • Binlogサービスの詳細を表示する
        • 設定変更
        • 自動スケーリングポリシーの変更
        • 弾力性ポリシーの変更
        • Binlogサービスの停止
    • スマートアップグレード
  • セキュリティ管理
    • アカウント設定
      • 個人アカウント情報の管理
      • マルチファクタ認証
      • 組織認証
        • 組織認証の有効化
        • IdPの設定
      • AccessKeyの管理
      • タイムゾーンの設定
      • クラウドマーケットアカウントの管理
      • アカウント監査
    • 組織プロジェクト管理
      • 組織・プロジェクト管理の概要
      • 組織情報の管理
      • プロジェクト管理
        • プロジェクト管理
        • プロジェクト間の双方向権限付与
        • AI設定
        • オブジェクトストレージの設定
        • プロジェクトメッセージのサブスクリプション
      • メンバー管理
      • ロール権限一覧
      • 組織コスト管理
        • 組織コストの概要
        • コスト明細
        • コストユニットの管理
      • 操作監査
    • アカウントと権限管理
      • アカウント権限リスト
      • クラウドベンダーアカウントの権限付与
      • AWS KMS キー管理
      • テクニカルサポートサービスのアクセス権限付与
    • セキュリティ暗号化
      • 許可リストグループ設定
      • SSLによる通信経路暗号化
      • TDE 透過的データ暗号化
    • モニタリングダッシュボード
    • イベントセンター
    • サポートプラン
      • OceanBase Cloud サポートプランの概要
      • サポートプランの購入と管理
  • SQL コンソール
    • 概要
    • SQLコンソールへのログイン
    • SQLの編集と実行
    • PLコンパイル
    • 結果セットの編集
    • 実行分析
    • データベースオブジェクト管理
      • テーブルの作成
      • ビューの作成
      • 関数の作成
      • ストアドプロシージャの作成
      • プログラムパッケージの作成
      • トリガーの作成
      • タイプの作成
      • シーケンスの作成
      • シノニムの作成
    • セッション変数の管理
    • SQLコンソールの機能キー一覧
    • スマートSQL開発
  • エコシステム統合
    • エコシステム統合の概要
    • データベースバージョニング
      • Liquibaseを使用したOceanBaseデータベースのバージョン管理
      • Flywayを使用したOceanBase Cloudデータベースのバージョン管理
    • データ統合
      • Canalを使用したデータの同期
      • dbtを使用したOceanBaseデータの分析
      • Debezium
      • Flinkによるデータの同期
      • AWS Glueを使用したOceanBaseデータの移行
      • Informatica CloudとOceanBaseデータベースの連携ガイド
      • OceanBaseデータベースとKafkaの統合に関するベストプラクティス
      • Maxwell
      • SeaTunnel
      • DataWorks
      • Apache NiFiによるOceanBase Cloudの統合
    • SQL 開発
      • DataGripでOceanBase Cloudデータベースに接続する
      • DBeaverでOceanBase Cloudに接続する
      • NavicatでOceanBase Cloudに接続する
      • TablePlusでOceanBase Cloudデータベースに接続する
    • オーケスト레이션 スケジューリング
      • DolphinScheduler
      • LinkisとOceanBaseデータベースの連携
      • AirflowとOceanBaseデータベースの連携
    • 可視化
      • GrafanaでOceanBase Cloudの監視ダッシュボードデータを表示する
      • Power BIでOceanBase Cloudに接続してデータを取得する
      • Quick BIでOceanBase Cloudに接続する
      • SupersetとOceanBase Cloudを使用したデータ分析
      • TableauからOceanBase Cloudに接続する
    • オブザーバビリティ
      • Datadogを使用したOceanBase Cloudインスタンスの監視
      • Prometheusを使用したOceanBaseデータの監視
    • データベース管理
      • BytebaseによるOceanBaseインスタンスの管理
    • AI
      • OceanBase Cloud VectorとLlamaIndexの連携
      • OceanBase Cloud VectorとDifyの連携
      • OceanBase Cloud VectorとLangChainの連携
      • OceanBase Cloud VectorとQwenの連携
      • OceanBase Cloud VectorとOpenAIの連携
      • OceanBase Cloudとn8nの連携
      • OceanBase MCP ServerとTraeの連携
      • OceanBase Cloud VectorとSpring AI Alibabaの連携
      • OceanBase MCP ServerとClineの連携
      • OceanBase MCP ServerとCursorの連携
      • OceanBase MCP ServerとContinueの連携
      • Google GenAI ToolboxとOceanBase MCP Serverの統合
      • OceanBase Cloud VectorとCamelAIの連携
      • OceanBase Cloud VectorとFirecrawlの連携
      • OceanBase Cloud VectorとHugging Faceの連携
      • OceanBase Cloud VectorとOllamaの連携
      • OceanBase Cloud VectorとGoogle Geminiの連携
      • OceanBase Cloud VectorとCloudflare Workers AIの連携
      • OceanBase MCP ServerとQoderの連携
      • OceanBase MCP ServerとOpenCodeの連携
      • OceanBase MCP ServerとClaude Codeの連携
      • OceanBase MCP ServerとGitHub Copilotの連携
      • OceanBase MCP ServerとCodexの連携
      • OceanBase Cloud VectorとJina AIの連携
      • OceanBase MCP ServerとAugment Codeの連携
      • OceanBase MCP ServerとClaude Codeの連携
      • OceanBase MCP ServerとKiroの連携
    • 開発ツール
      • Cloudflare WorkersでOceanBase Cloudに接続する
      • VercelでOceanBase Cloudに接続する
  • ベストプラクティス
    • クロスクラウドアクティブ-アクティブによる高可用性の実現に関するベストプラクティス
    • クロスクラウドのプライマリ/スタンバイデータベースによる高可用性(1プライマリ1スタンバイ)
    • クロスクラウドのプライマリ/スタンバイデータベースによる高可用性の実現(1プライマリ・複数スタンバイ)
    • ホストのCPU利用率が高すぎる
    • OceanBase Cloudクラウドデータベースの読み書き分離に関するベストプラクティス
    • AWS RDSのデータをOceanBase Cloudへ移行するベストプラクティス
  • リファレンスガイド
    • システムアーキテクチャ
    • システム管理
    • データベースオブジェクト管理
    • データベース設計と仕様制約
    • SQLリファレンス
    • システムビュー
    • 構成パラメータとシステム変数
    • エラーコード
    • パフォーマンスチューニング
    • Open API リファレンス
      • Open APIの概要
      • サービスエンドポイント
      • API接続について
      • Open API ディレクトリ
        • インスタンス管理
          • DescribeInstances - クラスタリストを取得する
          • DescribeInstance - クラスタ情報の取得
          • CreateInstance - クラスタの作成
          • DeleteInstance - クラスタの削除
          • ModifyInstanceName - クラスタ名の変更
          • DescribeNodeOptions - 監視に使用できるノードの候補を取得する
          • StopCluster - クラスタインスタンスの一時停止
          • StartCluster - クラスタインスタンスの起動
          • ModifyInstanceSpec - クラスタ仕様の変更
          • DescribeInstanceTopology - インスタンスのトポロジー情報を取得する
          • DescribeReadonlyInstances - インスタンスの読み取り専用レプリカ情報を取得する
          • CreateReadonlyInstance - 読み取り専用レプリカインスタンスの作成
          • ModifyReadonlyInstanceSpec - 読み取り専用レプリカインスタンスの仕様を変更する
          • ModifyReadonlyInstanceDiskSize - 読み取り専用レプリカのディスクサイズを変更する
          • ModifyReadonlyInstanceNodeNum - 読み取り専用レプリカのノード数を変更する
          • DeleteReadonlyInstance - 読み取り専用レプリカインスタンスの削除
          • DescribeInstanceAvailableRoZones - 読み取り専用レプリカのゾーンを取得する
          • DescribeInstanceParameters - クラスタレベルパラメータの取得
          • UpdateInstanceParameters - クラスタレベルパラメータの変更
          • DescribeInstanceParametersHistory - クラスタレベルパラメータの変更履歴を取得する
          • ModifyInstanceTagList - インスタンスタグの変更
          • ModifyInstanceNodeNum - クラスタノード数の変更
          • DescribeInstanceAnomalyEvents - インスタンスの異常イベントを取得する
          • DescribeOasClusterAnomalySqlList - クラスタの疑わしいSQL一覧を取得する
          • DescribeOasClusterSlowSQLList - クラスタのスローSQL一覧を取得する
          • DescribeInstanceSqlAuditServiceInfo - SQL監査サービス情報の取得
          • DescribeProxyClusterForInstance - インスタンスODPプロキシクラスタのクエリ
        • テナント管理
          • DescribeTenants - 条件でテナントを検索する
          • DescribeTenant - 指定クラスタ内の指定テナント情報を照会する
          • CreateTenants - テナントの作成
          • DeleteTenants - テナントの削除
          • ModifyTenantName - テナント名の変更
          • ModifyTenant - テナントの変更
          • ModifyTenantUserDescription - テナントユーザーの説明を変更する
          • ModifyTenantUserStatus - テナント内ユーザーのステータスを変更する
          • GetTenantCreateConstraints - テナント作成時の制約の確認
          • ModifyTenantPrimaryZone - テナントのプライマリゾーンを変更する
          • GetTenantCreateCpuConstraints - テナント作成時のCPU制約の確認
          • GetTenantCreateMemConstraints - テナント作成時のメモリ制約の確認
          • GetTenantModifyCpuConstraints - テナントのCPUを変更する際の制約を取得する
          • GetTenantModifyMemConstraints - テナントのメモリを変更する際の制約を取得する
          • CreateTenantSecurityIpGroup - テナントのセキュリティ許可リスト情報を作成する
          • DescribeTenantSecurityIpGroups - テナントの許可リストグループ一覧を取得する
          • ModifyTenantSecurityIpGroup - テナントの許可リストグループ情報を変更する
          • DeleteTenantSecurityIpGroup - テナントの許可リストグループ情報を削除する
          • DescribeTenantPrivateLink - テナントのPrivateLinkアドレス情報を照会する
          • DeletePrivatelinkConnection - テナント接続アドレスの削除
          • CreatePrivatelinkService - テナントのPrivateLink接続を有効化する
          • ConnectPrivatelinkService - PrivateLinkエンドポイントノードを介してデータベースに接続する
          • AddPrivatelinkServiceUser - PrivateLinkサービスの許可リストにユーザーを追加する
          • BatchKillProcessList - 指定テナントのセッションプロセスを一括終了する
          • DescribeProcessStatsComposition - セッションプロセス統計情報を取得する
          • DescribeTenantAddressInfo - テナントのアドレス情報を照会する
          • DescribeTenantAvailableRoZones - テナントの読み取り専用レプリカゾーンを取得する
          • ModifyTenantReadonlyReplica - テナントの読み取り専用レプリカを変更する
          • DescribeTenantParameters - テナントレベルパラメータを取得する
          • UpdateTenantParameters - テナントレベルパラメータの変更
          • DescribeTenantParametersHistory - テナントレベルのパラメータ変更履歴を取得する
          • ModifyTenantTagList - テナントタグの変更
          • CreateReadonlyPrivatelink - テナントのプライベートネットワーク読み取り専用アドレスを作成する
          • CreateReadwritePrivatelink - テナントのプライベートネットワーク読み書き分離アドレスを作成する
          • DescribeTenantPublicAddress - テナントのパブリックアドレスを照会する
          • DescribeTenantSqlAuditServiceInfo - テナントSQL監査サービス情報の取得
        • テナントアカウント管理
          • CreateTenantUser - テナントユーザーの作成
          • DescribeTenantUsers - テナントアカウントリストの検索
          • DeleteTenantUsers - テナントユーザーの削除
          • ModifyTenantUserPassword - テナントユーザーパスワードの変更
          • ModifyTenantUserRoles - テナントユーザーのロールを変更する
        • データベース管理
          • CreateDatabase - データベースの作成
          • DescribeDatabases - データベースリストのクエリ
          • DeleteDatabases - データベースの削除
          • ModifyDatabaseUserRoles - データベースユーザーロールの変更
          • DescribeTableSchema - テーブルスキーマのクエリ
        • バックアップとリカバリ管理
          • DescribeDataBackupSet - データバックアップセット情報の照会
          • DescribeRestorableTenants - 復元可能なテナントのクエリ
          • ModifyBackupStrategy - バックアップ戦略の変更
          • CreateTenantRestoreTask - テナント復元タスクの作成
          • CreateDataBackupTask - バックアップタスクの作成
          • DescribeOneDataBackupSet - タスクIDによるバックアップセットの取得
          • CreateBackupSetDownloadLink - バックアップセットのダウンロードリンクを作成する
          • DeleteBackupSetDownloadTask - バックアップセットのダウンロードタスクを削除する
          • DescribeBackupSetDownloadLink - バックアップセットのダウンロードリンクの取得
          • DescribeBackupStrategy - バックアップポリシーのクエリ
        • データベースプロキシ管理
          • CreateTenantAddress - テナントアドレスの作成
          • CreateTenantSingleTunnelSLBAddress - テナントのsingleTunnelSLBアドレスを新規作成
          • DeleteTenantAddress - テナントアドレスの削除
          • DescribeTenantAddress - テナントアドレスの照会
          • ModifyOdpClusterSpec - データベースプロキシクラスタの仕様を変更する
          • ModifyTenantAddressPort - テナントアドレスのポートを変更する
          • ModifyTenantAddressDomainPrefix - テナントアドレスのドメインプレフィックスを変更する
          • ConfirmPrivatelinkConnection - PrivateLinkによるプライベートネットワーク接続の完了を確認する
          • DescribeTenantAddressInfo - すべてのテナントアドレス情報の照会
        • データソース管理
          • ListDataSources - データソースリストの取得
          • CreateDataSource - データソースの作成
          • DeleteDataSource - データソースの削除
        • OMS プロジェクト管理
          • DescribeProject - プロジェクトの詳細を照会する
          • CreateProject - プロジェクトの作成
          • DeleteProject - プロジェクトの削除
          • DescribeProjectSteps - プロジェクトのステップリストを取得する
          • StartProject - プロジェクトの起動
          • StopProject - プロジェクトの停止
          • ResumeProject - プロジェクトの再開
          • ReleaseProject - プロジェクトリソースの解放
          • UpdateProjectConfig - プロジェクト設定の更新
          • ListProjectModifyRecords - プロジェクトの変更履歴を取得する
          • CreateProjectModifyRecords - プロジェクトの変更レコードを作成する (テーブルの追加・削除)
          • CancelProjectModifyRecord - 変更レコードの取消
          • RetryProjectModifyRecords - 変更レコードの再試行
          • StopProjectModifyRecords - 変更レコードの終了
          • GetModifyRecord - 変更レコードの詳細を取得する
          • DescribeTransferMapping - 転送オブジェクトのマッピング設定を取得する
        • モニタリング管理
          • DescribeTenantMetrics - テナントメトリクス情報の照会
          • DescribeMetricsData - モニタリングメトリクスデータのクエリ
          • CreatePrometheusIntegration - Prometheus監視の統合を作成する
          • DeletePrometheusIntegration - Prometheusモニタリング統合の削除
          • ListPrometheusIntegration - Prometheus監視連携リストの取得
          • DescribeNodeMetrics - ノードメトリクス情報の照会
        • 診断管理
          • DescribeOasTopSQLList - TopSQLリストのクエリ
          • DescribeOasAnomalySQLList - 疑わしいSQLリストの照会
          • DescribeOasSlowSQLList - SlowSQLリストのクエリ
          • DescribeOasSQLText - SQLテキストのクエリ
          • DescribeSqlAudits - SQL監査データの照会
          • DescribeOutlineBinding - SQLアウトラインのバインディング情報を照会する
          • DescribeSampleSqlRawTexts - 元のSQLテキストサンプルの照会
          • DescribeSQLTuningAdvices - SQLチューニングのアドバイスを取得する
          • DescribeOasSlowSQLSamples - スローSQL実行詳細のサンプルデータを照会する
          • DescribeOasSQLTrends - SQL実行履歴のクエリ
          • DescribeOasSQLPlanGroup - SQL実行計画のクエリ
          • DescribeRcaRecord - 根本原因分析レコードのクエリ
          • DescribeTopSQLComparision - SQL実行の比較
          • DescribeSessionStatsGroupBySqlId - SQL ID別に集計されたセッション統計情報を取得する
          • DescribeIndexes - インデックス情報のクエリ
          • DescribeOasHighRiskSQL - ハイリスクSQLのクエリ
        • セキュリティ管理
          • CreateSecurityIpGroup - インスタンスの許可リストグループを作成する
          • DescribeInstanceSSL - インスタンスのSSL設定情報を照会する
          • ModifyInstanceSSL - インスタンスのSSL設定を変更する
          • DescribeTenantEncryption - テナントの暗号化情報を照会する
          • ModifyTenantEncryption - テナントの透過的データ暗号化を有効にする
          • ModifySecurityIps - インスタンスの許可リスト内のIPリストを変更する
          • DeleteSecurityIpGroup - インスタンスの許可リストグループを削除する
          • DescribeTenantSecurityConfigs - テナントのセキュリティ設定検査
          • DescribeInstanceSecurityConfigs - クラスタのセキュリティ設定検査
        • タグ管理
          • DescribeTags - タグリストの取得
          • CreateTags - バッチでタグを作成する
          • UpdateTag - タグの更新
          • DeleteTag - タグの削除
        • 履歴イベント管理
          • DescribeOperationEvents - 過去のイベントを取得する
        • AI サービス管理
          • CreateAIServiceAPIKey - AI APIキーの作成
          • DeleteAIServiceAPIKey - AI APIキーの削除
          • ListAIServiceAPIKeys - APIキーの一覧を取得する
      • Open API よくある質問 FAQ
      • OceanBaseクラウドデータベースとOceanBase CloudのAPI比較
    • クライアントダウンロード
      • OceanBaseクライアント(OBClient)のダウンロード
      • JDBCドライバーのダウンロード
      • クライアント版ODCのダウンロード
      • ODBCドライバーのダウンロード
      • OBClient Libsドライバーのダウンロード
    • パフォーマンステスト
      • OceanBase Cloudのパフォーマンステスト - sysbenchテスト
      • OceanBase Cloudのパフォーマンステスト - TPCHテスト
      • OceanBase Cloudのパフォーマンステスト - TPCCテスト
    • モニタリング指標リファレンス
      • クラスタデータベース
      • クラスタホスト
      • Binlogサービス
      • クロスクラウドネットワークチャネル接続
      • パフォーマンスとSQL
      • トランザクション
      • ストレージとキャッシュ
      • プロキシデータベース
      • プロキシホスト
    • 開発者センター使用ガイド
      • プロダクト紹介
        • OceanBase Developer Centerについて
        • 制限事項
      • クイックスタート
        • デスクトップ版 ODC
          • クイックスタート
          • デスクトップ版ODCのインストール
          • デスクトップ版ODCの使用
        • Web 版 ODC
          • クイックスタート
          • Web版ODCの使用
      • データソース管理
        • データソースの作成
        • データソースとプロジェクトの連携
        • データベース運用保守
          • セッション管理
          • グローバル変数の管理
          • ごみ箱の管理
      • SQL 開発
        • SQLの編集と実行
        • PLコンパイルとデバッグ
        • 結果の編集とエクスポート
        • 実行分析
        • テストデータの生成
        • システム設定
        • データベースオブジェクト
          • テーブルオブジェクト
            • 概要
            • テーブルの作成
          • ビューオブジェクト
            • 概要
            • ビューの作成
            • ビューの管理
          • マテリアライズドビューオブジェクト
            • 概要
            • マテリアライズドビューの作成
            • マテリアライズドビューの管理
          • 関数オブジェクト
            • 概要
            • 関数の作成
            • 関数の管理
          • ストアドプロシージョブジェクト
            • 概要
            • ストアドプロシージャの作成
            • ストアドプロシージャの管理
          • シーケンスオブジェクト
            • 概要
            • シーケンスの作成
            • シーケンスの管理
          • パッケージオブジェクト
            • 概要
            • プログラムパッケージの作成
            • プログラムパッケージの管理
          • トリガーオブジェクト
            • 概要
            • トリガーの作成
            • トリガーの管理
          • タイプオブジェクト
            • 概要
            • タイプの作成
            • タイプの管理
          • シノニムオブジェクト
            • 概要
            • シノニムの作成
            • シノニムの管理
      • インポートとエクスポート
        • スキーマとデータのインポート
        • スキーマとデータのエクスポート
      • 変更リスク管理
        • ユーザー権限管理
          • ユーザーとロール
          • 自動権限付与
          • ユーザー権限管理
        • プロジェクトの協働管理
        • リスクレベル、リスク識別ルール、および承認プロセス
        • SQLチェック仕様
        • SQLウィンドウ規範
        • データベース変更管理
        • マルチデータベース変更管理
        • ロックフリースキーマ変更
        • シャドウテーブルの同期
        • 構造比較
      • データライフサイクル管理
        • パーティション計画管理
          • パーティション計画の管理
          • パーティション戦略の設定
          • パーティション戦略の使用例
        • SQLスケジュールタスク
      • データマスキングと監査
        • データマスキング
        • 操作監査
      • メッセージ通知管理
        • メッセージ通知の概要
        • プッシュ履歴の確認
        • 通知チャンネルの管理
          • プッシュチャネルの作成
          • プッシュチャネルの表示・編集・削除
          • カスタムチャネルの使用例
        • プッシュルールの管理
      • ベストプラクティス
        • SQL開発でよく使われるコツ
        • ODCチームスペースの魅力的な世界へようこそ
        • OceanBase APのリアルタイムSQL診断機能の解説
        • OceanBase履歴データソリューション
        • ODC SQLチェック仕様による高リスク操作の自動検出
        • ODCによるシャーディングデータベース・テーブルの管理と変更
        • データマスキングの管理と運用
        • エンタープライズレベルの管理・協働:データベースの変更を守るために
    • データ開発
      • 概要
      • ワークスペース管理
      • ワークブック管理
      • コンピューティングノードプール管理
      • タスクフローの管理
      • ダッシュボードの管理
      • Gitリポジトリ管理
      • SQL 開発
        • SQLの編集と実行
        • 結果セットの編集
        • 実行分析
        • データベースオブジェクト管理
          • テーブルの作成
          • ビューの作成
          • 関数の作成
          • ストアドプロシージャの作成
        • セッション変数の管理
        • Git統合
      • サンプルデータセットの紹介
      • OceanBase Cloud データ開発用語集
  • 課金管理
    • 費用概要の表示
    • 請求書の表示
      • 注文の確認
    • 月次請求書の表示
    • 支払い詳細の表示
    • AI サービス課金
      • 使用状況統計
      • API Keyの記録を見る
      • モデルレート
    • 支払い方法
      • バウチャーによる支払い
    • 請求書の管理
  • 関連規約
    • クラウドサービス契約
    • サービスレベル契約
    • データ処理に関する補遺
    • OceanBaseクラウド移行サービスに関するサービスレベル契約

PDF をダウンロード

ドキュメントフィードバック
  1. ドキュメントセンター
  2. OceanBase Cloud

SpringBatchでOceanBase Cloudに接続するサンプルプログラム

最終更新:2026-09-30 10:37:21

前提条件
操作手順
ステップ1:OceanBase Cloudの接続文字列を取得する
ステップ2:java-oceanbase-springbatch プロジェクトをIDEAにインポートする
ステップ3:java-oceanbase-springbatch プロジェクトのデータベース接続情報を修正する
ステップ4:java-oceanbase-springbatch プロジェクトを実行する
プロジェクトコードについて
pom.xmlコードの紹介
application.propertiesファイルの紹介
BatchApplication.javaファイルの紹介
BatchConfig.javaファイルの紹介
People.javaファイルの紹介
PeopleDESC.javaファイルの紹介
AddPeopleDescProcessor.javaファイルの紹介
AddDescPeopleWriter.javaファイルの紹介
AddPeopleWriter.javaファイルの紹介
BatchConfigTest.javaファイルの紹介
AddPeopleDescProcessorTest.javaファイルの紹介
AddDescPeopleWriterTest.javaファイルの紹介
AddPeopleWriterTest.javaファイルの紹介
全コード表示
関連ドキュメント

本記事では、SpringBatchフレームワークとOceanBase Cloudを使用して、テーブルの作成、データの挿入、クエリなどの基本的な操作を実現するアプリケーションの構築方法を紹介します。

      クリックしてjava-oceanbase-springbatchサンプルプロジェクトをダウンロード
  </a>
  <!-- <a role='video' href='https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/video-center/video/video/07%20java-ob-springbatch_e07.mp4'>
      
      SpringBatchでOceanBaseデータベースに接続するサンプルプログラム(Oracleモード)
  </a> -->

前提条件

  • OceanBase Cloudデータベースアカウントを登録済みで、クラスタインスタンスとOceanBase CloudのOracleモードテナントを作成していること。詳細については、クラスタインスタンスの作成およびテナントの作成をご参照ください。
  • JDK 1.8とMavenがインストール済みであること。
  • IntelliJ IDEAがインストール済みであること。

説明

このドキュメントでコードを実行するために使用したツールはIntelliJ IDEA 2021.3.2 (Community Edition)です。個人の好みに応じて、適切なツールを選択してサンプルコードを実行することもできます。

操作手順

説明

本記事で示す操作手順は、Windows環境に基づいています。他のOS環境やコンパイラを使用している場合は、操作手順が若干異なる場合があります。

  1. OceanBase Cloudの接続文字列を取得します。
  2. java-oceanbase-springbatch プロジェクトをIDEAにインポートします。
  3. java-oceanbase-springbatch プロジェクトのデータベース接続情報を修正します。
  4. java-oceanbase-springbatch プロジェクトを実行します。

ステップ1:OceanBase Cloudの接続文字列を取得する

  1. OceanBase Cloudコンソールにログインします。インスタンスリストページで、対象インスタンスの情報を展開し、対象テナントで、接続 > 接続文字列を取得 を選択します。

    詳細な操作については、接続文字列の取得をご参照ください。

  2. 作成済みのOceanBase Cloudに基づいて、以下のURLに対応する情報を入力します。

    OceanBase CloudのOracleモードへの接続URL例:

    jdbc:oceanbase://$host:$port/$schema_name?user=$user_name&password=$password
    

    パラメータ説明:

    • $host:OceanBase Cloudの接続アドレスを指定します。例:t********.********.oceanbase.cloud
    • $port:OceanBase Cloudの接続ポートを指定します。デフォルトは1521です。
    • $schema_name:アクセスするスキーマ名です。
    • $user_name:データベースにアクセスするアカウントを指定します。
    • $password:アカウントのパスワードを指定します。

    URLパラメータの詳細については、データベースURLをご参照ください。

ステップ2:java-oceanbase-springbatch プロジェクトをIDEAにインポートする

  1. IntelliJ IDEA を開き、File > Open... オプションを選択します。

  2. 表示された Open File or Project ウィンドウで、対応するプロジェクトファイルを選択し、OK をクリックしてプロジェクトファイルのインポートを完了します。

  3. IntelliJ IDEAは、プロジェクト内のさまざまなファイルの種類を自動的に認識し、Project ツールウィンドウで、プロジェクトのディレクトリ構造、ファイルリスト、モジュールリスト、依存関係などの情報を確認できます。Project ツールウィンドウは通常、IntelliJ IDEA画面の左側にあり、デフォルトでは開いています。Project ツールウィンドウが閉じている場合は、メニューバーの View > Tool Windows > Project をクリックするか、ショートカットキー Alt + 1 を使用して再表示できます。

    説明

    IntelliJ IDEAでプロジェクトをインポートすると、IntelliJ IDEAはプロジェクト内のpom.xmlファイルを自動的に検出し、ファイルに記述されている依存関係に基づいて必要な依存ライブラリを自動的にダウンロードし、プロジェクトに追加します。

  4. プロジェクトの状況を確認します。

ステップ3:java-oceanbase-springbatch プロジェクトのデータベース接続情報を修正する

ステップ1:OceanBase Cloudデータベース接続文字列を取得する の情報に基づいて、application.properties ファイル内のデータベース接続情報を修正します。

例:

  • データベースドライバーの名前:com.oceanbase.jdbc.Driver
  • OceanBase Cloudデータベースの接続アドレスは t5******.********.oceanbase.cloud です。
  • アクセスポートは1521を使用します。
  • アクセスするスキーマ名は sys です。
  • テナントの接続アカウントはoracle001です。
  • パスワードは ****** です。

サンプルコードは以下のとおりです:

spring.datasource.driver-class-name=com.oceanbase.jdbc.Driver
spring.datasource.url=jdbc:oceanbase://t5******.********.oceanbase.cloud:1521/sys?characterEncoding=utf-8
spring.datasource.username=oracle001
spring.datasource.password=******

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

spring.batch.job.enabled=false

logging.level.org.springframework=INFO
logging.level.com.example=DEBUG

ステップ4:java-oceanbase-springbatch プロジェクトを実行する

  • AddDescPeopleWriterTest.java ファイルを実行します。

    1. プロジェクト構造の src > test > java から AddDescPeopleWriterTest.java ファイルを見つけます。
    2. ツールメニューバーで Run > Run... > AddDescPeopleWriterTest.testWrite を選択するか、右上の 緑色の三角形 を直接クリックして実行します。
    3. IDEAのコンソールでプロジェクトのログ情報と出力結果を確認します。
    people_desc テーブルのデータ:
    PeopleDESC [name=John, age=25, desc=This is John with age 25]
    PeopleDESC [name=Alice, age=30, desc=This is Alice with age 30]
    Batch Job execution completed.
    
  • AddPeopleWriterTest.java ファイルを実行します。

    1. プロジェクト構造の src > test > java から AddPeopleWriterTest.java ファイルを見つけます。
    2. ツールメニューバーで Run > Run... > AddPeopleWriterTest.testWrite を選択するか、右上の 緑色の三角形 を直接クリックして実行します。
    3. IDEAのコンソールでプロジェクトのログ情報と出力結果を確認します。
    people テーブルのデータ:
    People [name=zhangsan, age=27]
    People [name=lisi, age=35]
    Batch Job execution completed.
    

プロジェクトコードについて

java-oceanbase-springbatch をクリックしてプロジェクトコードをダウンロードします。これは java-oceanbase-springbatch という名前の圧縮ファイルです。

解凍すると、java-oceanbase-springbatch という名前のフォルダが作成されます。ディレクトリ構造は以下のとおりです:

│  pom.xml
│
├─.idea
│
├─src
│  ├─main
│  │  ├─java
│  │  │  └─com
│  │  │      └─oceanbase
│  │  │          └─example
│  │  │              └─batch
│  │  │                  │──BatchApplication.java
│  │  │                  │
│  │  │                  ├─config
│  │  │                  │   └─BatchConfig.java
│  │  │                  │
│  │  │                  ├─model
│  │  │                  │   ├─People.java
│  │  │                  │   └─PeopleDESC.java
│  │  │                  │
│  │  │                  ├─processor
│  │  │                  │   └─AddPeopleDescProcessor.java
│  │  │                  │
│  │  │                  └─writer
│  │  │                      ├─AddDescPeopleWriter.java
│  │  │                      └─AddPeopleWriter.java
│  │  │
│  │  └─resources
│  │      └─application.properties
│  │
│  └─test
│      └─java
│          └─com
│              └─oceanbase
│                  └─example
│                      └─batch
│                          ├─config
│                          │   └─BatchConfigTest.java
│                          │
│                          ├─processor
│                          │   └─AddPeopleDescProcessorTest.java
│                          │
│                          └─writer
│                              ├─AddDescPeopleWriterTest.java
│                              └─AddPeopleWriterTest.java
│
└─target

ファイルの説明:

  • pom.xml:Mavenプロジェクトの設定ファイルで、プロジェクトの依存関係、プラグイン、ビルドなどの情報が含まれます。
  • .idea:IDE(統合開発環境)で使用されるディレクトリで、プロジェクト関連の設定情報を格納します。
  • src:プロジェクトのソースコードを格納するディレクトリです。
  • main: 主要なソースコードとリソースファイルを格納するディレクトリ。
  • java: Javaソースコードを格納するディレクトリ。
  • com: Javaパッケージのルートディレクトリ。
  • oceanbase: プロジェクトのルートディレクトリ。
  • example: プロジェクトのルートディレクトリ。
  • batch: プロジェクトのメインパッケージ名。
  • BatchApplication.java:アプリケーションのエントリクラスで、mainメソッドが含まれます。
  • config:設定クラスを格納するフォルダです。
  • BatchConfig.java:アプリケーションの設定クラスで、アプリケーションのプロパティや動作を設定するために使用されます。
  • model:データモデルクラスを格納するフォルダです。
  • People.java:人員データのモデルクラスです。
  • PeopleDESC.java:人員DESCデータのモデルクラスです。
  • processor:プロセッサクラスを格納するフォルダです。
  • AddPeopleDescProcessor.java:人員DESC情報を追加するプロセッサクラスです。
  • writer:ライタークラスを格納するフォルダです。
  • AddDescPeopleWriter.java:人員DESC情報を書き込むライタークラスです。
  • AddPeopleWriter.java:人員情報を書き込むライタークラスです。
  • resources:リソースフォルダで、アプリケーションの設定ファイルやその他の静的リソースファイルが含まれます。
  • application.properties:アプリケーションの設定ファイルで、アプリケーションのプロパティを設定するために使用されます。
  • test: テストコードとリソースファイルを格納するディレクトリ。
  • BatchConfigTest.java:アプリケーション設定クラスのテストクラスです。
  • AddPeopleDescProcessorTest.java:人員DESC情報を追加するプロセッサのテストクラスです。
  • AddDescPeopleWriterTest.java:人員DESC情報を書き込むライターのテストクラスです。
  • AddPeopleWriterTest.java:人員情報を書き込むライターのテストクラスです。
  • target: コンパイル済みのClassファイル、Jarパッケージなどのファイルを格納するディレクトリ。

pom.xmlコードの紹介

説明

例を確認するだけの場合は、デフォルトのコードを使用し、変更は不要です。以下の説明に従って、ご自身の要件に応じて pom.xml ファイルを変更することもできます。

pom.xml 設定ファイルの内容は以下のとおりです:

  1. ファイル宣言ステートメント。

    このファイルがXMLファイルであり、使用しているXMLバージョンが 1.0、文字エンコーディング方式が UTF-8 であることを宣言します。

    コード:

    <?xml version="1.0" encoding="UTF-8"?>
    
  2. POMの名前空間とPOMモデルバージョンを設定します。

  3. xmlns を使用して、POMの名前空間を http://maven.apache.org/POM/4.0.0 に指定します。

  4. xmlns:xsi を使用して、XMLの名前空間を http://www.w3.org/2001/XMLSchema-instance に指定します。

  5. xsi:schemaLocation を使用して、POM の名前空間を http://maven.apache.org/POM/4.0.0、POM の XSD ファイルの場所を https://maven.apache.org/xsd/maven-4.0.0.xsd に指定します。

  6. <modelVersion> 要素を使用して、このPOMファイルで使用するPOMモデルバージョンを 4.0.0 と指定します。

コード:

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
</project>
  1. 親要素情報を設定します。

  2. <groupId> を使用して、親要素の識別子を org.springframework.boot と指定します。

  3. <artifactId> を使用して、親要素の依存関係を spring-boot-starter-parent と指定します。

  4. <version> を使用して、親要素のバージョン番号を 2.7.11 と指定します。

  5. relativePath を使用して、親要素のパスが空であることを示します。

コード:

 <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>2.7.11</version>
     <relativePath/>
 </parent>
  1. 基本情報を設定します。

  2. <groupId> を使用して、プロジェクト識別子を com.oceanbase と指定します。

  3. <artifactId> を使用して、プロジェクトの依存関係を java-oceanbase-springboot と指定します。

  4. <version> を使用して、プロジェクトのバージョン番号を 0.0.1-SNAPSHOT と指定します。

  5. description を使用して、プロジェクト情報を Demo project for Spring Batch と紹介します。

コード:

 <groupId>com.oceanbase</groupId>
 <artifactId>java-oceanbase-springboot</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>java-oceanbase-springbatch</name>
 <description>Demo project for Spring Batch</description>
  1. Javaバージョンの設定

    プロジェクトで使用するJavaバージョンを1.8に指定します。

    コード:

      <properties>
          <java.version>1.8</java.version>
      </properties>
    
  2. コア依存関係の設定

    1. 依存関係の所属組織をorg.springframework.boot、名前をspring-boot-starterに指定します。この依存関係により、Spring Bootがデフォルトでサポートするコンポーネント依存関係を利用でき、Web、データ処理、セキュリティ、Testなどの機能をサポートします。

      コード:

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter</artifactId>
      </dependency>
      
    2. 依存関係の所属組織をorg.springframework.boot、名前をspring-boot-starter-jdbcに指定します。この依存関係により、Spring Bootが提供するJDBC関連機能(接続プール、データソース設定など)を利用できます。

      コード:

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-jdbc</artifactId>
      </dependency>
      
    3. 依存関係の所属組織をorg.springframework.boot、名前をspring-boot-starter-test、スコープをtestに指定します。この依存関係により、JUnit、Mockito、Hamcrestなど、Spring Bootが提供するテストフレームワークとツールを利用できます。

      コード:

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
      </dependency>
      
    4. 依存関係の所属組織をcom.oceanbase、名前をoceanbase-client、バージョン番号を2.4.3に指定します。この依存関係により、OceanBaseが提供するクライアント機能(接続、クエリ、トランザクションなど)を利用できます。

      コード:

          <dependency>
              <groupId>com.oceanbase</groupId>
              <artifactId>oceanbase-client</artifactId>
              <version>2.4.3</version>
          </dependency>
      
    5. 依存関係の所属組織をorg.springframework.boot、名前をspring-boot-starter-batchに指定します。この依存関係により、Spring Bootが提供するバッチ処理機能を利用できます。

      コード:

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-batch</artifactId>
      </dependency>
      
    6. 依存関係の所属組織をorg.springframework.boot、名前をspring-boot-starter-data-jpaに指定します。この依存関係により、JPAを使用したデータアクセスに必要な依存関係と設定を利用できます。Spring Boot Starter Data JPAは、Spring Bootのスターターです。

      コード:

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-jpa</artifactId>
      </dependency>
      
    7. 依存関係の所属組織をorg.apache.tomcat、名前をtomcat-jdbcに指定します。この依存関係により、Tomcatが提供するJDBC接続プール機能(接続プールの設定、接続の取得と解放、接続の管理など)を利用できます。

      コード:

      <dependency>
          <groupId>org.apache.tomcat</groupId>
          <artifactId>tomcat-jdbc</artifactId>
      </dependency>
      
    8. 依存関係が属するテストフレームワークを junit、名前を junit、バージョン番号を 4.10、適用範囲を test と指定します。この依存関係により、JUnitユニットテストの依存関係設定を追加できます。

      コード:

      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.10</version>
          <scope>test</scope>
      </dependency>
      
    9. 依存関係が属する組織を javax.activation、名前を javax.activation-api、バージョン番号を 1.2.0 と指定します。この依存関係により、Java Activation Framework(JAF)ライブラリを導入できます。

      コード:

      <dependency>
          <groupId>javax.activation</groupId>
          <artifactId>javax.activation-api</artifactId>
          <version>1.2.0</version>
      </dependency>
      
    10. 依存関係が属する組織を jakarta.persistence、名前を jakarta.persistence-api、バージョン番号を 2.2.3 と指定します。この依存関係により、Jakarta Persistence APIの依存関係設定を追加できます。 コード:

      <dependency>
          <groupId>jakarta.persistence</groupId>
          <artifactId>jakarta.persistence-api</artifactId>
          <version>2.2.3</version>
      </dependency>
      
  3. Mavenプラグインの設定。

    依存関係が属する組織を org.springframework.boot、名前を spring-boot-maven-plugin と指定します。このプラグインは、Spring Bootアプリケーションを実行可能なJARパッケージまたはWARパッケージにパッケージ化し、直接実行するために使用されます。

    コード:

     <build>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
         </plugins>
     </build>
    

application.propertiesファイルの紹介

application.properties ファイルは、データベース接続およびその他の関連パラメータを設定するために使用されます。例えば、データベースドライバー、接続URL、ユーザー名、パスワードなどです。また、JPA(Java Persistence API)とSpring Batchに関する設定、およびログレベルの設定も含まれています。

  1. データベース接続の設定。

    • spring.datasource.driver を使用して、データベースドライバーを com.oceanbase.jdbc.Driver と指定します。これはOceanBase Cloudとの接続を確立するために使用されます。
    • spring.datasource.url を使用して、データベース接続用のURLを指定します。
    • spring.datasource.username を使用して、データベース接続用のユーザー名を指定します。
    • spring.datasource.password を使用して、データベース接続用のパスワードを指定します。

    コード:

    spring.datasource.driver-class-name=com.oceanbase.jdbc.Driver
    spring.datasource.url=jdbc:oceanbase://host:port/schema_name?characterEncoding=utf-8
    spring.datasource.username=user_name
    spring.datasource.password=******
    
  2. JPAの設定。

    • spring.jpa.show-sql を使用して、ログにSQLステートメントを表示するかどうかを指定します。true に設定するとSQLステートメントが表示されます。
    • spring.jpa.hibernate.ddl-auto を使用して、HibernateのDDL操作動作を指定します。ここでは update に設定しており、アプリケーション起動時にデータベース構造を自動的に更新します。

    コード:

    spring.jpa.show-sql=true
    spring.jpa.hibernate.ddl-auto=update
    
  3. Spring Batchの設定:

    spring.batch.job.enabled を使用して、Spring Batchジョブを有効にするかどうかを指定します。ここでは false に設定し、Spring Batchジョブを無効にします。

    コード:

    spring.batch.job.enabled=false
    
  4. ログの設定:

    • logging.level.org.springframework を使用して、Springフレームワークのログレベルを INFO に指定します。
    • logging.level.com.example を使用して、アプリケーションのカスタムコードのログレベルを DEBUG に指定します。

    コード:

    logging.level.org.springframework=INFO
    logging.level.com.example=DEBUG
    

BatchApplication.javaファイルの紹介

BatchApplication.java ファイルは、Spring Bootアプリケーションのエントリーファイルです。

BatchApplication.java ファイルのコードは、主に以下の部分で構成されています:

  1. 他のクラスとインターフェースのインポート。

    このファイルには以下のインターフェースとクラスが含まれていることを宣言します:

    • SpringApplication クラス:Spring Bootアプリケーションを起動するために使用されます。
    • SpringBootApplication アノテーション:このクラスをSpring Bootアプリケーションのエントリーとしてマークするために使用されます。

    コード:

        import org.springframework.boot.SpringApplication;
        import org.springframework.boot.autoconfigure.SpringBootApplication;
    
  2. BatchApplication クラスの定義。

    @SpringBootApplication アノテーションを使用して、BatchApplication クラスをSpring Bootアプリケーションのエントリーとしてマークします。BatchApplication クラスには、アプリケーションのエントリーポイントとして静的な main メソッドが定義されています。このメソッド内では、SpringApplication.run メソッドを使用してSpring Bootアプリケーションを起動します。さらに、バッチ処理ジョブを実行するための runBatchJob というメソッドも定義されています。

    コード:

    
        @SpringBootApplication
        public class BatchApplication {
            public static void main(String[] args) {
                SpringApplication.run(BatchApplication.class, args);
            }
    
            public void runBatchJob() {
            }
        }
    

BatchConfig.javaファイルの紹介

BatchConfig.java ファイルは、バッチ処理ジョブのステップ、リーダー、プロセッサ、ライターなどのコンポーネントを設定するために使用されます。

BatchConfig.java ファイルのコードは、主に以下の部分で構成されています:

  1. 他のクラスとインターフェースのインポート。

    このファイルには以下のインターフェースとクラスが含まれていることを宣言します:

    • People クラス:データベースから読み取った人員情報を格納するために使用されます。
    • PeopleDESC クラス:人員情報を変換または処理した後の説明情報を格納するために使用されます。
    • AddPeopleDescProcessor クラス:読み取った People オブジェクトを PeopleDESC オブジェクトに変換する、ItemProcessor インターフェースの実装クラスです。
    • AddDescPeopleWriter クラス:PeopleDESC オブジェクトをターゲット位置に書き込む、ItemWriter インターフェースの実装クラスです。
    • Job インターフェース:バッチ処理ジョブを表します。
    • Step インターフェース:ジョブ内のステップを表します。
    • EnableBatchProcessing アノテーション:Spring Batchの設定アノテーションで、Spring Batch処理機能を有効化および設定するために使用されます。
    • JobBuilderFactory クラス:ジョブの作成と設定に使用されます。
    • StepBuilderFactory クラス:ステップの作成と設定に使用されます。
    • RunIdIncrementer クラス:Spring Batchの実行ID(Run ID)インクリメンターで、ジョブを実行するたびに実行IDを増加させるために使用されます。
    • ItemProcessor インターフェース:読み取ったアイテムを処理または変換するために使用されます。
    • ItemReader インターフェース:データソースからアイテムを読み取るために使用されます。
    • ItemWriter インターフェース:処理または変換後のアイテムを指定されたターゲット位置に書き込むために使用されます。
    • JdbcCursorItemReader クラス:データベースからデータを読み取り、カーソル結果セットを返すために使用されます。
    • Autowired アノテーション:依存性注入を行うために使用されます。
    • Bean アノテーション:Beanの作成と設定に使用されます。
    • ComponentScan アノテーション:コンポーネントスキャンを実行するパッケージまたはクラスを指定します。
    • Configuration アノテーション:クラスを設定クラスとしてマークします。
    • EnableAutoConfiguration アノテーション:Spring Bootの自動設定を有効にします。
    • SpringBootApplication アノテーション:このクラスをSpring Bootアプリケーションのエントリポイントとしてマークします。
    • DataSource インターフェース:データベース接続を表すために使用されます。

    コード:

    import com.oceanbase.example.batch.model.People;
    import com.oceanbase.example.batch.model.PeopleDESC;
    import com.oceanbase.example.batch.processor.AddPeopleDescProcessor;
    import com.oceanbase.example.batch.writer.AddDescPeopleWriter;
    import org.springframework.batch.core.Job;
    import org.springframework.batch.core.Step;
    import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
    import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
    import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
    import org.springframework.batch.core.launch.support.RunIdIncrementer;
    import org.springframework.batch.item.ItemProcessor;
    import org.springframework.batch.item.ItemReader;
    import org.springframework.batch.item.ItemWriter;
    import org.springframework.batch.item.database.JdbcCursorItemReader;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    
    import javax.sql.DataSource;
    
  2. BatchConfig クラスを定義します。

    これはシンプルなSpring Batchバッチ処理ジョブです。データの読み取り、処理、書き込みの方法を定義し、これらのステップを1つのジョブとしてカプセル化します。Spring Batchのアノテーションと自動設定機能を使用し、設定クラス内の各 @Bean メソッドを通じて対応するコンポーネントインスタンスを作成し、step1 でこれらのコンポーネントを使用してデータの読み取り、処理、書き込みを完了します。

    • @Configuration により、このクラスが設定クラスであることを示します。
    • @EnableBatchProcessing により、Spring Batchの処理機能を有効にします。このアノテーションは、JobRepository、JobLauncher などの必要な bean を自動的に作成します。
    • @SpringBootApplication はSpring Bootアプリケーションのメインクラスに使用されるアノテーションであり、Spring Bootアプリケーションの起動ポイントです。
    • @ComponentScan により、コンポーネントスキャンを実行するパッケージを指定し、Springに対してこのパッケージおよびサブパッケージ内のすべてのコンポーネントをスキャンして登録するよう指示します。
    • @EnableAutoConfiguration により、Spring Bootアプリケーションのインフラストラクチャを自動設定します。

    コード:

     @Configuration
     @EnableBatchProcessing
     @SpringBootApplication
     @ComponentScan("com.oceanbase.example.batch.writer")
     @EnableAutoConfiguration
     public class BatchConfig {
     }
    
    1. @Autowired アノテーションを定義します。

      @Autowired アノテーションを使用して、JobBuilderFactory、StepBuilderFactory、DataSource を BatchConfig クラスのメンバ変数に注入します。JobBuilderFactory はジョブ(Job)を作成および設定するためのファクトリクラス、StepBuilderFactory はステップ(Step)を作成および設定するためのファクトリクラス、DataSource はデータベース接続を取得するためのインターフェースです。

      コード:

      @Autowired
      private JobBuilderFactory jobBuilderFactory;
      
      @Autowired
      private StepBuilderFactory stepBuilderFactory;
      
      @Autowired
      private DataSource dataSource;
      
    2. @Bean アノテーションを定義します。

      @Bean アノテーションを使用して、バッチ処理ジョブのリーダー、プロセッサ、ライター、ステップ、ジョブを作成するためのいくつかのメソッドを定義します。

      • peopleReader メソッドにより、ItemReader コンポーネントのインスタンスを作成します。このコンポーネントは JdbcCursorItemReader を使用してデータベース内の People オブジェクトデータを読み取ります。データソース dataSource を設定し、データベース行を People オブジェクトにマッピングする RowMapper を設定し、SQLクエリステートメントを SELECT * FROM people に設定します。

      • addPeopleDescProcessor メソッドにより、ItemProcessor コンポーネントのインスタンスを作成します。このコンポーネントは AddPeopleDescProcessor を使用して People オブジェクトを処理し、PeopleDESC オブジェクトに変換して返します。

      • addDescPeopleWriter メソッドにより、ItemWriter コンポーネントのインスタンスを作成します。このコンポーネントは AddDescPeopleWriter を使用して PeopleDESC オブジェクトをターゲット位置に書き込みます。

      • step1 メソッドにより、Step コンポーネントのインスタンスを作成します。このステップの名前は step1 です。stepBuilderFactory.get でステップビルダーを取得し、リーダーを ItemReader コンポーネントに、プロセッサを ItemProcessor コンポーネントに、ライターを ItemWriter コンポーネントに設定します。chunk サイズを 10 に設定し、最後に build を呼び出して設定済みの Step をビルドして返します。

      • importJob メソッドにより、Job コンポーネントのインスタンスを作成します。このジョブの名前は importJob です。jobBuilderFactory.get でジョブビルダーを取得し、インクリメンターを RunIdIncrementer に設定し、ジョブ flow の最初のステップを Step に設定します。最後に build を呼び出して設定済みの Job をビルドして返します。

        コード:

        @Bean
        public ItemReader<People> peopleReader() {
            JdbcCursorItemReader<People> reader = new JdbcCursorItemReader<>();
            reader.setDataSource((javax.sql.DataSource) dataSource);
            reader.setRowMapper(new BeanPropertyRowMapper<>(People.class));
            reader.setSql("SELECT * FROM people");
            return reader;
        }
        
        @Bean
        public ItemProcessor<People, PeopleDESC> addPeopleDescProcessor() {
            return new AddPeopleDescProcessor();
        }
        
        @Bean
        public ItemWriter<PeopleDESC> addDescPeopleWriter() {
            return new AddDescPeopleWriter();
        }
        
        @Bean
        public Step step1(ItemReader<People> reader, ItemProcessor<People, PeopleDESC> processor,
                        ItemWriter<PeopleDESC> writer) {
            return stepBuilderFactory.get("step1")
                    .<People, PeopleDESC>chunk(10)
                    .reader(reader)
                    .processor(processor)
                    .writer(writer)
                    .build();
        }
        
        @Bean
        public Job importJob(Step step1) {
            return jobBuilderFactory.get("importJob")
                    .incrementer(new RunIdIncrementer())
                    .flow(step1)
                    .end()
                    .build();
        }
        

People.javaファイルの紹介

People.java ファイルは、人の情報を表す People クラスのデータモデルを作成します。このクラスには、2つのプライベートメンバ変数 name と age が含まれ、それぞれに対応する getter と setter メソッドも備えています。最後に、オブジェクトの情報を出力するために toString メソッドをオーバーライドします。ここで、name は人の名前を表し、age は人の年齢を表します。getter と setter メソッドを使用して、これらのプロパティの値を取得および設定できます。

このクラスの役割は、バッチ処理プログラムの入力と出力において、データを格納および受け渡す方法を提供することです。バッチ処理の読み取りおよび書き込み操作では、People オブジェクトを使用してデータを格納し、setter メソッドでデータを設定し、getter メソッドでデータを取得します。

コード:

    public class People {
        private String name;
        private int age;

            // getters and setters

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
        @Override
        public String toString() {
            return "People [name=" + name + ", age=" + age + "]";
        }
        // Getters and setters
    }

PeopleDESC.javaファイルの紹介

PeopleDESC.java ファイルは、人員情報を表す PeopleDESC クラスのデータモデルを作成します。PeopleDESC クラスには name、age、desc、id の4つの属性があり、それぞれ人の氏名、年齢、説明、識別子を表します。このクラスには、属性の値にアクセスおよび設定するための対応する getter および setter メソッドが含まれています。toString メソッドをオーバーライドして、氏名、年齢、説明を含むクラスの文字列表現を返します。

People クラスと同様に、PeopleDESC クラスもバッチ処理プログラムの入力と出力において、データの格納と受け渡しに使用されます。

コード:

    public class PeopleDESC {
        private String name;
        private int age;
        private String desc;
        private int id;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public String getDesc() {
            return desc;
        }

        public void setDesc(String desc) {
            this.desc = desc;
        }

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        @Override
        public String toString() {
            return "PeopleDESC [name=" + name + ", age=" + age + ", desc=" + desc + "]";
        }
    }

AddPeopleDescProcessor.javaファイルの紹介

AddPeopleDescProcessor.java ファイルは、ItemProcessor インターフェースを実装する AddPeopleDescProcessor というクラスを定義しており、People オブジェクトを PeopleDESC オブジェクトに変換するために使用されます。

AddPeopleDescProcessor.java ファイルのコードは、主に以下の部分で構成されています:

  1. 他のクラスとインターフェースのインポート。

    このファイルには以下のインターフェースとクラスが含まれていることを宣言します:

    • People クラス:データベースから読み取った人員情報を格納するために使用されます。
    • PeopleDESC クラス:人員情報を変換または処理した後の説明情報を格納するために使用されます。
    • ItemProcessor インターフェース:読み取ったアイテムを処理または変換するために使用されます。

    コード:

    import com.oceanbase.example.batch.model.People;
    import com.oceanbase.example.batch.model.PeopleDESC;
    import org.springframework.batch.item.ItemProcessor;
    
  2. AddPeopleDescProcessor クラスの定義。

    ItemProcessor インターフェースを実装する AddPeopleDescProcessor クラスは、People オブジェクトを PeopleDESC オブジェクトに変換し、バッチ処理プロセスにおける入力データの処理ロジックを実装します。

    このクラスの process メソッドでは、まず PeopleDESC オブジェクト desc を作成します。次に、item パラメータから People オブジェクトの属性(name と age)を取得し、これらの属性を desc オブジェクトに設定します。同時に、desc オブジェクトの desc 属性にも値を代入します。この代入ロジックは、People オブジェクトの属性に基づいて説明情報を生成するものです。最後に、処理後の PeopleDESC オブジェクトを返します。

    コード:

    public class AddPeopleDescProcessor implements ItemProcessor<People, PeopleDESC> {
        @Override
        public PeopleDESC process(People item) throws Exception {
            PeopleDESC desc = new PeopleDESC();
            desc.setName(item.getName());
            desc.setAge(item.getAge());
            desc.setDesc("This is " + item.getName() + " with age " + item.getAge());
            return desc;
        }
    }
    

AddDescPeopleWriter.javaファイルの紹介

AddDescPeopleWriter.java ファイルは、ItemWriter インターフェースを実装する AddDescPeopleWriter クラスを定義しており、People オブジェクトをデータベースに書き込むために使用されます。

AddDescPeopleWriter.java ファイルのコードは、主に以下の部分で構成されています:

  1. 他のクラスとインターフェースのインポート。

    このファイルには以下のインターフェースとクラスが含まれていることを宣言します:

    • PeopleDESC クラス:人員情報を変換または処理した後の説明情報を格納するために使用されます。
    • ItemWriter インターフェース:処理または変換後のアイテムを指定されたターゲットに書き込むために使用されます。
    • Autowired アノテーション:依存性注入を行うために使用されます。
    • JdbcTemplate クラス:SQLステートメントを実行するメソッドを提供します。
    • List インターフェース:クエリ結果の集合を操作するために使用されます。

    コード:

    import com.oceanbase.example.batch.model.PeopleDESC;
    import org.springframework.batch.item.ItemWriter;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    
    import java.util.List;
    
  2. AddDescPeopleWriter クラスの定義。

    1. @Autowired アノテーションを使用して JdbcTemplate インスタンスを自動注入し、データ書き込み時にこのインスタンスを使用してデータベース操作を実行します。

      コード:

          @Autowired
          private JdbcTemplate jdbcTemplate;
      
    2. write メソッド内で、渡された List<? extends PeopleDESC> を走査し、各 PeopleDESC オブジェクトを順次取り出します。まず、既存の people_desc テーブルを削除するために、SQL ステートメント DROP TABLE people_desc を実行します。次に、id、name、age、description の4列を含む people_desc テーブルを作成するために、SQL ステートメント CREATE TABLE people_desc (id INT PRIMARY KEY, name VARCHAR2(255), age INT, description VARCHAR2(255)) を実行します。その後、SQL ステートメント INSERT INTO people_desc (id, name, age, description) VALUES (?, ?, ?, ?) を使用して、各 PeopleDESC オブジェクトのプロパティ値を people_desc テーブルに挿入します。

      コード:

          @Override
          public void write(List<? extends PeopleDESC> items) throws Exception {
              // 既存のテーブルを削除
              jdbcTemplate.execute("DROP TABLE people_desc");
              // テーブル作成ステートメント
              String createTableSql = "CREATE TABLE people_desc (id INT PRIMARY KEY, name VARCHAR2(255), age INT, description VARCHAR2(255))";
              jdbcTemplate.execute(createTableSql);
              for (PeopleDESC item : items) {
                  String sql = "INSERT INTO people_desc (id, name, age, description) VALUES (?, ?, ?, ?)";
                  jdbcTemplate.update(sql, item.getId(), item.getName(), item.getAge(), item.getDesc());
              }
          }
      

AddPeopleWriter.javaファイルの紹介

AddPeopleWriter.java ファイルは、ItemWriter インターフェースを実装した AddDescPeopleWriter クラスを定義しており、PeopleDESC オブジェクトをデータベースに書き込むために使用されます。

AddPeopleWriter.java ファイルのコードは、主に以下の部分で構成されています:

  1. 他のクラスとインターフェースのインポート。

    このファイルには以下のインターフェースとクラスが含まれていることを宣言します:

    • People クラス:データベースから読み取った人員情報を格納するために使用されます。
    • ItemWriter インターフェース:処理または変換後のアイテムを指定されたターゲットに書き込むために使用されます。
    • Autowired アノテーション:依存性注入を行うために使用されます。
    • JdbcTemplate クラス:SQLステートメントを実行するメソッドを提供します。
    • Component アノテーション:このクラスをSpringコンポーネントとしてマークするために使用されます。
    • List インターフェース:クエリ結果セットを操作するために使用されます。

    コード:

    import com.oceanbase.example.batch.model.People;
    import org.springframework.batch.item.ItemWriter;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.stereotype.Component;
    
    import java.util.List;
    
  2. AddPeopleWriter クラスの定義。

    1. @Autowired アノテーションを使用して JdbcTemplate インスタンスを自動注入し、データ書き込み時にこのインスタンスを使用してデータベース操作を実行します。

      コード:

          @Autowired
          private JdbcTemplate jdbcTemplate;
      
    2. write メソッドでは、渡された List<? extends People> を走査し、各 People オブジェクトを順次取り出します。まず、既存の people テーブルを削除するために、SQL ステートメント DROP TABLE people を実行します。次に、name と age の2つの列を含む people テーブルを作成するために、SQL ステートメント CREATE TABLE people (name VARCHAR2(255), age INT) を実行します。その後、SQL ステートメント INSERT INTO people (name, age) VALUES (?, ?) を使用して、各 People オブジェクトのプロパティ値を people テーブルに挿入します。

      コード:

      @Override
      public void write(List<? extends People> items) throws Exception {
          // 既存のテーブルを削除
          jdbcTemplate.execute("DROP TABLE people");
          // テーブル作成ステートメント
          String createTableSql = "CREATE TABLE people (name VARCHAR2(255), age INT)";
          jdbcTemplate.execute(createTableSql);
          for (People item : items) {
              String sql = "INSERT INTO people (name, age) VALUES (?, ?)";
              jdbcTemplate.update(sql, item.getName(), item.getAge());
          }
      }
      

BatchConfigTest.javaファイルの紹介

BatchConfigTest.java ファイルは、JUnitを使用したテストクラスであり、Spring Batchのジョブ設定をテストするために使用されます。

BatchConfigTest.java ファイルのコードは、主に以下の部分で構成されています:

  1. 他のクラスとインターフェースのインポート。

    このファイルには以下のインターフェースとクラスが含まれていることを宣言します:

    • Assert クラス:テスト結果をアサートするために使用されます。
    • Test アノテーション:テストメソッドをマークするために使用されます。
    • RunWith アノテーション:テストランナーを指定するために使用されます。
    • Job インターフェース:バッチ処理ジョブを表します。
    • JobExecution クラス:バッチ処理ジョブの実行を表します。
    • JobParameters クラス:バッチ処理ジョブのパラメータを表します。
    • JobParametersBuilder クラス:バッチ処理ジョブのパラメータを構築するために使用されます。
    • JobLauncher インターフェース:バッチ処理ジョブを起動するために使用されます。
    • Autowired アノテーション:依存性注入を行うために使用されます。
    • SpringBootTest アノテーション:テストクラスをSpring Bootテストとして指定するために使用されます。
    • SpringRunner クラス:テストランナーをSpringRunnerとして指定するために使用されます。

    コード:

    import org.junit.Assert;
    import org.junit.jupiter.api.Test;
    import org.junit.runner.RunWith;
    import org.springframework.batch.core.Job;
    import org.springframework.batch.core.JobExecution;
    import org.springframework.batch.core.JobParameters;
    import org.springframework.batch.core.JobParametersBuilder;
    import org.springframework.batch.core.launch.JobLauncher;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import javax.batch.runtime.BatchStatus;
    
  2. BatchConfigTest クラスの定義。

    SpringBootTest アノテーションと SpringRunner ランナーを使用することで、Spring Bootの統合テストを実行できます。testJob メソッドでは、JobLauncherTestUtils ヘルパークラスを使用してバッチ処理ジョブを起動し、アサートを使用してジョブの実行状態を検証します。

    1. @Autowired アノテーションを使用して、JobLauncherTestUtils インスタンスを自動注入します。

      コード:

      @Autowired
      private JobLauncherTestUtils jobLauncherTestUtils;
      
    2. @Test アノテーションを使用して、testJob メソッドをテストメソッドとしてマークします。このメソッドでは、まず JobParameters オブジェクトを作成し、次に jobLauncherTestUtils.launchJob メソッドを使用してバッチ処理ジョブを起動し、Assert.assertEquals メソッドを使用してジョブの実行状態が COMPLETED であることをアサートします。

      コード:

      @Test
      public void testJob() throws Exception {
          JobParameters jobParameters = new JobParametersBuilder()
                  .addString("jobParam", "paramValue")
                  .toJobParameters();
      
          JobExecution jobExecution = jobLauncherTestUtils.launchJob(jobParameters);
      
          Assert.assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
      }
      
    3. @Autowired アノテーションを使用して、JobLauncher インスタンスを自動注入します。

      コード:

      @Autowired
      private JobLauncher jobLauncher;
      
    4. @Autowired アノテーションを使用して、Job インスタンスを自動注入します。

      コード:

      @Autowired
      private Job job;
      
    5. バッチ処理ジョブの起動を補助するために、JobLauncherTestUtils という名前の内部クラスを定義します。このクラスには、バッチ処理ジョブを起動するための launchJob メソッドが定義されています。このメソッドでは、jobLauncher.run メソッドを使用してジョブを起動し、ジョブの実行結果を返します。

      コード:

      private class JobLauncherTestUtils {
          public JobExecution launchJob(JobParameters jobParameters) throws Exception {
              return jobLauncher.run(job, jobParameters);
          }
      }
      

AddPeopleDescProcessorTest.javaファイルの紹介

AddPeopleDescProcessorTest.java ファイルは、JUnitを使用したテストクラスであり、Spring Batchのジョブ設定をテストするために使用されます。

AddPeopleDescProcessorTest.java ファイルのコードは、主に以下の部分で構成されています:

  1. 他のクラスとインターフェースのインポート。

    このファイルには以下のインターフェースとクラスが含まれていることを宣言します:

    • People クラス:データベースから読み取った人員情報を格納するために使用されます。
    • PeopleDESC クラス:人員情報を変換または処理した後の説明情報を格納するために使用されます。
    • Test アノテーション:テストメソッドをマークするために使用されます。
    • RunWith アノテーション:テストランナーを指定するために使用されます。
    • Autowired アノテーション:依存性注入を行うために使用されます。
    • SpringBootTest アノテーション:テストクラスをSpring Bootテストとして指定するために使用されます。
    • SpringRunner クラス:テストランナーをSpringRunnerとして指定するために使用されます。

    コード:

    import com.oceanbase.example.batch.model.People;
    import com.oceanbase.example.batch.model.PeopleDESC;
    import org.junit.jupiter.api.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
  2. AddPeopleDescProcessorTest クラスの定義。

    SpringBootTest アノテーションと SpringRunner ランナーを使用して、Spring Bootの統合テストを行います。

    1. @Autowired アノテーションを使用して、AddPeopleDescProcessor インスタンスを自動注入します。

      コード:

      @Autowired
      private AddPeopleDescProcessor processor;
      
    2. @Test アノテーションを使用して、testProcess メソッドをテストメソッドとしてマークします。このメソッドでは、まず People オブジェクトを作成し、次に processor.process メソッドを使用してそのオブジェクトを処理し、結果を PeopleDESC オブジェクトに代入します。

      コード:

      @Test
      public void testProcess() throws Exception {
          People people = new People();
          PeopleDESC desc = processor.process(people);
      }
      

AddDescPeopleWriterTest.javaファイルの紹介

AddDescPeopleWriterTest.java ファイルは、JUnitを使用したテストクラスであり、AddDescPeopleWriter の書き込みロジックをテストするために使用されます。

AddDescPeopleWriterTest.java ファイルのコードは、主に以下の部分で構成されています:

  1. 他のクラスとインターフェースのインポート。

    このファイルには以下のインターフェースとクラスが含まれていることを宣言します:

    • PeopleDESC クラス:人員情報を変換または処理した後の説明情報を格納するために使用されます。
    • Assert クラス:テスト結果をアサートするために使用されます。
    • Test アノテーション:テストメソッドをマークするために使用されます。
    • RunWith アノテーション:テストランナーを指定するために使用されます。
    • Autowired アノテーション:依存性注入を行うために使用されます。
    • SpringBootTest アノテーション:テストクラスをSpring Bootテストとして指定するために使用されます。
    • JdbcTemplate クラス:SQLステートメントを実行するメソッドを提供します。
    • SpringRunner クラス:テストランナーをSpringRunnerとして指定するために使用されます。
    • ArrayList クラス:空のリストを作成するために使用されます。
    • List インターフェース:クエリ結果セットを操作するために使用されます。

    コード:

    import com.oceanbase.example.batch.model.PeopleDESC;
    import org.junit.Assert;
    import org.junit.jupiter.api.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import java.util.ArrayList;
    import java.util.List;
    
  2. AddDescPeopleWriterTest クラスの定義。

    SpringBootTest アノテーションと SpringRunner ランナーを使用して、Spring Bootの統合テストを行います。

    1. @Autowired を使用したインスタンスの注入。 @Autowired アノテーションを使用して、AddPeopleDescProcessor および JdbcTemplate インスタンスを自動注入します。

      コード:

      @Autowired
      private AddDescPeopleWriter writer;
      @Autowired
      private JdbcTemplate jdbcTemplate;
      
    2. @Test を使用したデータの挿入と出力のテスト。 @Test アノテーションを使用して、testWrite メソッドをテストメソッドとしてマークします。このメソッドでは、まず空の peopleDescList リストを作成し、リストに2つの PeopleDESC オブジェクトを追加します。次に、writer.write メソッドを使用して、リスト内のデータをデータベースに書き込みます。その後、jdbcTemplate を使用してクエリステートメントを実行し、people_desc テーブルからデータを取得します。そして、アサーションステートメントを使用してデータの正確性を検証します。最後に、クエリ結果をコンソールに出力し、ジョブの実行完了メッセージを出力します。

      1. people_desc テーブルへのデータ挿入。 まず、空の PeopleDESC オブジェクトリスト peopleDescList を作成します。次に、2つの PeopleDESC オブジェクト desc1 と desc2 を作成し、それぞれのプロパティ値を設定します。desc1 と desc2 を peopleDescList リストに追加します。次に、writer の write メソッドを呼び出し、peopleDescList 内のオブジェクトをデータベースの people_desc テーブルに書き込みます。その後、JdbcTemplate を使用してクエリステートメント SELECT COUNT(*) FROM people_desc を実行し、people_desc テーブルのレコード数を取得して変数 count に代入します。最後に、Assert.assertEquals メソッドを使用してアサーションを行い、count の値が 2 と等しいかどうかを検証します。

        コード:

           List<PeopleDESC> peopleDescList = new ArrayList<>();
           PeopleDESC desc1 = new PeopleDESC();
           desc1.setId(1);
           desc1.setName("John");
           desc1.setAge(25);
           desc1.setDesc("This is John with age 25");
           peopleDescList.add(desc1);
           PeopleDESC desc2 = new PeopleDESC();
           desc2.setId(2);
           desc2.setName("Alice");
           desc2.setAge(30);
           desc2.setDesc("This is Alice with age 30");
           peopleDescList.add(desc2);
           writer.write(peopleDescList);
        
           String selectSql = "SELECT COUNT(*) FROM people_desc";
           int count = jdbcTemplate.queryForObject(selectSql, Integer.class);
           Assert.assertEquals(2, count);
        
      2. people_desc テーブル内のデータの出力。 まず、JdbcTemplate を使用してクエリステートメント SELECT * FROM people_desc を実行し、lambda 式を使用してクエリ結果を処理します。lambda 式では、rs.getInt、rs.getString などのメソッドを使用してクエリ結果セットのフィールド値を取得し、フィールド値を新しく作成した PeopleDESC オブジェクトに設定します。新しく作成した各 PeopleDESC オブジェクトを結果リスト resultDesc に追加します。その後、people_desc テーブル内のデータ: という一行のプロンプトメッセージを出力し、for ループを使用して resultDesc リスト内の各 PeopleDESC オブジェクトを走査し、System.out.println を使用して各オブジェクトの内容を出力します。最後に、ジョブの実行完了メッセージを出力します。

        コード:

        List<PeopleDESC> resultDesc = jdbcTemplate.query("SELECT * FROM people_desc", (rs, rowNum) -> {
           PeopleDESC desc = new PeopleDESC();
           desc.setId(rs.getInt("id"));
           desc.setName(rs.getString("name"));
           desc.setAge(rs.getInt("age"));
           desc.setDesc(rs.getString("description"));
           return desc;
        });
        
        System.out.println("people_desc テーブルのデータ:");
        for (PeopleDESC desc : resultDesc) {
           System.out.println(desc);
        }
        
        // バッチジョブ実行完了後の情報を出力
        System.out.println("Batch Job execution completed.");
        

AddPeopleWriterTest.javaファイルの紹介

AddPeopleWriterTest.java ファイルは、JUnitを使用したテストクラスであり、AddPeopleWriterTest の書き込みロジックをテストするために使用されます。

AddPeopleWriterTest.java ファイルのコードは、主に以下の部分で構成されています:

  1. 他のクラスとインターフェースのインポート。

    このファイルには以下のインターフェースとクラスが含まれていることを宣言します:

    • People クラス:データベースから読み取った人員情報を格納するために使用されます。
    • Test アノテーション:テストメソッドをマークするために使用されます。
    • RunWith アノテーション:テストランナーを指定するために使用されます。
    • Autowired アノテーション:依存性注入を行うために使用されます。
    • SpringBootApplication アノテーション:このクラスをSpring Bootアプリケーションのエントリポイントとしてマークするために使用されます。
    • SpringBootTest アノテーション:テストクラスをSpring Bootテストとして指定するために使用されます。
    • ComponentScan アノテーション:コンポーネントスキャンを行うパッケージまたはクラスを指定するために使用されます。
    • JdbcTemplate クラス:SQLステートメントを実行するメソッドを提供します。
    • SpringRunner クラス:テストランナーを SpringRunner として指定するために使用されます。
    • ArrayList クラス:空のリストを作成するために使用されます。
    • List インターフェース:クエリ結果セットを操作するために使用されます。

    コード:

    import com.oceanbase.example.batch.model.People;
    import org.junit.jupiter.api.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import java.util.ArrayList;
    import java.util.List;
    
  2. AddPeopleWriterTest クラスの定義。

    SpringBootTest アノテーションと SpringRunner ランナーを使用してSpring Bootの統合テストを行い、@ComponentScan アノテーションを使用してスキャンするパッケージパスを指定します。

    1. @Autowired を使用したインスタンスの注入。 @Autowired アノテーションを使用して、addPeopleWriter および JdbcTemplate インスタンスを自動注入します。

      コード:

      @Autowired
      private AddPeopleWriter addPeopleWriter;
      @Autowired
      private JdbcTemplate jdbcTemplate;
      
    2. @Test を使用したデータの挿入と出力のテスト。

      1. people テーブルへのデータ挿入。 まず、空の People オブジェクトリスト peopleList を作成します。次に、2つの People オブジェクト person1 と person2 を作成し、それぞれの名前と年齢のプロパティを設定します。その後、これら2つの People オブジェクトを peopleList リストに追加します。その後、addPeopleWriter の write メソッドを呼び出し、peopleList をパラメータとして渡して、これらの People オブジェクトをデータベースに書き込みます。

        コード:

           List<People> peopleList = new ArrayList<>();
           People person1 = new People();
           person1.setName("zhangsan");
           person1.setAge(27);
           peopleList.add(person1);
           People person2 = new People();
           person2.setName("lisi");
           person2.setAge(35);
           peopleList.add(person2);
           addPeopleWriter.write(peopleList);
        
      2. people テーブル内のデータの出力。 まず、JdbcTemplate を使用してクエリステートメント SELECT * FROM people を実行し、lambda 式を使用してクエリ結果を処理します。lambda 式では、rs.getString と rs.getInt メソッドを使用してクエリ結果セットのフィールド値を取得し、その値を新しく作成した People オブジェクトに設定します。新しく作成した各 People オブジェクトを結果リスト result に追加します。次に、people テーブル内のデータ: という一行のメッセージを出力します。その後、for ループを使用して result リスト内の各 People オブジェクトを走査し、System.out.println を使用して各オブジェクトの内容を出力します。最後に、ジョブの実行完了メッセージを出力します。

        コード:

           List<People> result = jdbcTemplate.query("SELECT * FROM people", (rs, rowNum) -> {
               People person = new People();
               person.setName(rs.getString("name"));
               person.setAge(rs.getInt("age"));
               return person;
           });
        
           System.out.println("people テーブルのデータ:");
           for (People person : result) {
               System.out.println(person);
           }
        
           // バッチジョブ実行完了後の情報を出力
           System.out.println("Batch Job execution completed.");
        

全コード表示

pom.xml
application.properties
BatchApplication.java
BatchConfig.java
People.java
PeopleDESC.java
AddPeopleDescProcessor.java
AddDescPeopleWriter.java
AddPeopleWriter.java
BatchConfigTest.java
AddPeopleDescProcessorTest.java
AddDescPeopleWriterTest.java
AddPeopleWriterTest.java
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.11</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.oceanbase</groupId>
    <artifactId>java-oceanbase-springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>java-oceanbase-springbatch</name>
    <description>Demo project for Spring Batch</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.oceanbase</groupId>
            <artifactId>oceanbase-client</artifactId>
            <version>2.4.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-batch</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>javax.activation-api</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
            <groupId>jakarta.persistence</groupId>
            <artifactId>jakarta.persistence-api</artifactId>
            <version>2.2.3</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

#configuration database

spring.datasource.driver-class-name=com.oceanbase.jdbc.Driver
spring.datasource.url=jdbc:oceanbase://host:port/schema_name?characterEncoding=utf-8
spring.datasource.username=user_name
spring.datasource.password=

# JPA
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

# Spring Batch
spring.batch.job.enabled=false

#
logging.level.org.springframework=INFO
logging.level.com.example=DEBUG
package com.oceanbase.example.batch;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class BatchApplication {
    public static void main(String[] args) {
        SpringApplication.run(BatchApplication.class, args);
    }

    public void runBatchJob() {
    }
}

package com.oceanbase.example.batch.config;

import com.oceanbase.example.batch.model.People;
import com.oceanbase.example.batch.model.PeopleDESC;
import com.oceanbase.example.batch.processor.AddPeopleDescProcessor;
import com.oceanbase.example.batch.writer.AddDescPeopleWriter;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.launch.support.RunIdIncrementer;
import org.springframework.batch.item.ItemProcessor;
import org.springframework.batch.item.ItemReader;
import org.springframework.batch.item.ItemWriter;
import org.springframework.batch.item.database.JdbcCursorItemReader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.BeanPropertyRowMapper;

import javax.sql.DataSource;
//import javax.activation.DataSource;

@Configuration
@EnableBatchProcessing
@SpringBootApplication
@ComponentScan("com.oceanbase.example.batch.writer")
@EnableAutoConfiguration
public class BatchConfig {
    @Autowired
    private JobBuilderFactory jobBuilderFactory;

    .Autowired
    private StepBuilderFactory stepBuilderFactory;

    .Autowired
    private DataSource dataSource;// Spring Bootの自動設定で提供されるデフォルトのdataSourceを使用する

    @Bean
    public ItemReader<People> peopleReader() {
        JdbcCursorItemReader<People> reader = new JdbcCursorItemReader<>();
        reader.setDataSource((javax.sql.DataSource) dataSource);
        reader.setRowMapper(new BeanPropertyRowMapper<>(People.class));
        reader.setSql("SELECT * FROM people");
        return reader;
    }

    @Bean
    public ItemProcessor<People, PeopleDESC> addPeopleDescProcessor() {
        return new AddPeopleDescProcessor();
    }

    @Bean
    public ItemWriter<PeopleDESC> addDescPeopleWriter() {
        return new AddDescPeopleWriter();
    }

    @Bean
    public Step step1(ItemReader<People> reader, ItemProcessor<People, PeopleDESC> processor,
                      ItemWriter<PeopleDESC> writer) {
        return stepBuilderFactory.get("step1")
                .<People, PeopleDESC>chunk(10)
                .reader(reader)
                .processor(processor)
                .writer(writer)
                .build();
    }

    @Bean
    public Job importJob(Step step1) {
        return jobBuilderFactory.get("importJob")
                .incrementer(new RunIdIncrementer())
                .flow(step1)
                .end()
                .build();
    }
}
package com.oceanbase.example.batch.model;

public class People {
    private String name;
    private int age;

        // getters and setters

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "People [name=" + name + ", age=" + age + "]";
    }
    // Getters and setters
}
package com.oceanbase.example.batch.model;

public class PeopleDESC {
    private String name;
    private int age;
    private String desc;
    private int id;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "PeopleDESC [name=" + name + ", age=" + age + ", desc=" + desc + "]";
    }
}
package com.oceanbase.example.batch.processor;

import com.oceanbase.example.batch.model.People;
import com.oceanbase.example.batch.model.PeopleDESC;
import org.springframework.batch.item.ItemProcessor;

public class AddPeopleDescProcessor implements ItemProcessor<People, PeopleDESC> {
    @Override
    public PeopleDESC process(People item) throws Exception {
        PeopleDESC desc = new PeopleDESC();
        desc.setName(item.getName());
        desc.setAge(item.getAge());
        desc.setDesc("This is " + item.getName() + " with age " + item.getAge());
        return desc;
    }
}
package com.oceanbase.example.batch.writer;

import com.oceanbase.example.batch.model.PeopleDESC;
import org.springframework.batch.item.ItemWriter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

public class AddDescPeopleWriter implements ItemWriter<PeopleDESC> {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void write(List<? extends PeopleDESC> items) throws Exception {
        // 既存のテーブルを削除する場合があるため、まず削除します。
        jdbcTemplate.execute("DROP TABLE people_desc");
        // テーブル作成ステートメント
        String createTableSql = "CREATE TABLE people_desc (id INT PRIMARY KEY, name VARCHAR2(255), age INT, description VARCHAR2(255))";
        jdbcTemplate.execute(createTableSql);
        for (PeopleDESC item : items) {
            String sql = "INSERT INTO people_desc (id, name, age, description) VALUES (?, ?, ?, ?)";
            jdbcTemplate.update(sql, item.getId(), item.getName(), item.getAge(), item.getDesc());
        }
    }
}
package com.oceanbase.example.batch.writer;

import com.oceanbase.example.batch.model.People;
import org.springframework.batch.item.ItemWriter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public class AddPeopleWriter implements ItemWriter<People> {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void write(List<? extends People> items) throws Exception {
        // 既存のテーブルを削除する場合があるため、まず削除します。
        jdbcTemplate.execute("DROP TABLE people");
        // テーブル作成ステートメント
        String createTableSql = "CREATE TABLE people (name VARCHAR2(255), age INT)";
        jdbcTemplate.execute(createTableSql);
        for (People item : items) {
            String sql = "INSERT INTO people (name, age) VALUES (?, ?)";
            jdbcTemplate.update(sql, item.getName(), item.getAge());
        }
    }
}

package com.oceanbase.example.batch.config;

import org.junit.Assert;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.batch.runtime.BatchStatus;

@RunWith(SpringRunner.class)
@SpringBootTest
public class BatchConfigTest {
    @Autowired
    private JobLauncherTestUtils jobLauncherTestUtils;

    @Test
    public void testJob() throws Exception {
        JobParameters jobParameters = new JobParametersBuilder()
                .addString("jobParam", "paramValue")
                .toJobParameters();

        JobExecution jobExecution = jobLauncherTestUtils.launchJob(jobParameters);

        Assert.assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
    }

    @Autowired
    private JobLauncher jobLauncher;

    @Autowired
    private Job job;

    private class JobLauncherTestUtils {
        public JobExecution launchJob(JobParameters jobParameters) throws Exception {
            return jobLauncher.run(job, jobParameters);
        }
    }
}
package com.oceanbase.example.batch.processor;

import com.oceanbase.example.batch.model.People;
import com.oceanbase.example.batch.model.PeopleDESC;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class AddPeopleDescProcessorTest {
    @Autowired
    private AddPeopleDescProcessor processor;

    @Test
    public void testProcess() throws Exception {
        People people = new People();
  //      people.setName("John");
  //      people.setAge(25);

        PeopleDESC desc = processor.process(people);

//      Assert.assertEquals("John", desc.getName());
//        Assert.assertEquals(25, desc.getAge());
 //       Assert.assertEquals("This is John with age 25", desc.getDesc());
    }
}

package com.oceanbase.example.batch.writer;

import com.oceanbase.example.batch.model.PeopleDESC;
import org.junit.Assert;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.ArrayList;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest
public class AddDescPeopleWriterTest {
    @Autowired
    private AddDescPeopleWriter writer;
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Test
    public void testWrite() throws Exception {

        // people_descテーブルにデータを挿入
        List<PeopleDESC> peopleDescList = new ArrayList<>();
        PeopleDESC desc1 = new PeopleDESC();
        desc1.setId(1);
        desc1.setName("John");
        desc1.setAge(25);
        desc1.setDesc("This is John with age 25");
        peopleDescList.add(desc1);
        PeopleDESC desc2 = new PeopleDESC();
        desc2.setId(2);
        desc2.setName("Alice");
        desc2.setAge(30);
        desc2.setDesc("This is Alice with age 30");
        peopleDescList.add(desc2);
        writer.write(peopleDescList);

        String selectSql = "SELECT COUNT(*) FROM people_desc";
        int count = jdbcTemplate.queryForObject(selectSql, Integer.class);
        Assert.assertEquals(2, count);

        // people_descテーブルのデータを出力
        List<PeopleDESC> resultDesc = jdbcTemplate.query("SELECT * FROM people_desc", (rs, rowNum) -> {
            PeopleDESC desc = new PeopleDESC();
            desc.setId(rs.getInt("id"));
            desc.setName(rs.getString("name"));
            desc.setAge(rs.getInt("age"));
            desc.setDesc(rs.getString("description"));
            return desc;
        });

        System.out.println("people_desc テーブルのデータ:");
        for (PeopleDESC desc : resultDesc) {
            System.out.println(desc);
        }

        // バッチジョブ実行完了後の情報を出力
        System.out.println("Batch Job execution completed.");
    }
}
package com.oceanbase.example.batch.writer;

import com.oceanbase.example.batch.model.People;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.ArrayList;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest
@SpringBootApplication
@ComponentScan("com.oceanbase.example.batch.writer")
public class AddPeopleWriterTest {

    @Autowired
    private AddPeopleWriter addPeopleWriter;
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Test
    public void testWrite() throws Exception {
        // peopleテーブルにデータを挿入
        List<People> peopleList = new ArrayList<>();
        People person1 = new People();
        person1.setName("zhangsan");
        person1.setAge(27);
        peopleList.add(person1);
        People person2 = new People();
        person2.setName("lisi");
        person2.setAge(35);
        peopleList.add(person2);
        addPeopleWriter.write(peopleList);

        // クエリして結果を出力
        List<People> result = jdbcTemplate.query("SELECT * FROM people", (rs, rowNum) -> {
            People person = new People();
            person.setName(rs.getString("name"));
            person.setAge(rs.getInt("age"));
            return person;
        });

        System.out.println("people テーブルのデータ:");
        for (People person : result) {
            System.out.println(person);
        }

        // ジョブ実行完了後のメッセージを出力
        System.out.println("Batch Job execution completed.");
    }
}

関連ドキュメント

OceanBase Connector/Jの詳細については、OceanBase JDBCドライバをご参照ください。

前のトピック

SpringBootでOceanBase Cloudデータベースに接続するサンプルプログラム
前へ

次のトピック

Spring JDBCによるOceanBase Cloudデータベース接続サンプルプログラム
次へ
このページの内容
前提条件
操作手順
ステップ1:OceanBase Cloudの接続文字列を取得する
ステップ2:java-oceanbase-springbatch プロジェクトをIDEAにインポートする
ステップ3:java-oceanbase-springbatch プロジェクトのデータベース接続情報を修正する
ステップ4:java-oceanbase-springbatch プロジェクトを実行する
プロジェクトコードについて
pom.xmlコードの紹介
application.propertiesファイルの紹介
BatchApplication.javaファイルの紹介
BatchConfig.javaファイルの紹介
People.javaファイルの紹介
PeopleDESC.javaファイルの紹介
AddPeopleDescProcessor.javaファイルの紹介
AddDescPeopleWriter.javaファイルの紹介
AddPeopleWriter.javaファイルの紹介
BatchConfigTest.javaファイルの紹介
AddPeopleDescProcessorTest.javaファイルの紹介
AddDescPeopleWriterTest.javaファイルの紹介
AddPeopleWriterTest.javaファイルの紹介
全コード表示
関連ドキュメント