You 携帯電話やポータブルデバイスの実際の動作環境を考慮していないため、JDBCを使用する方が簡単で高速です。彼らはしばしばバグのあるトラフィック書き換えプロキシと非常識なファイアウォールを介してフレーク接続をします。彼らは、典型的には、短期間で多くの桁数で変化する、高いおよび可変のパケット損失率および待ち時間を有するネットワークトランスポート層を使用している。 TCPはこの環境では本当に素晴らしいものではなく、特に長時間の接続で苦労しています。 /それはデバイスがに、WiFiネットワークを切り替えたときにあなたがいた場所に戻って取得するのは簡単ですので
あなたは意志日常出会いの問題を通過することができます。 1つの課題は、デッド接続を確実にタイムアウトさせ、セッションを再確立し、古いセッションで保持されているロックを解除することです(サーバーは、クライアントが同時に停止したと判断しない可能性があります)。もう1つは、非常に遅い操作、長時間実行するデータベーストランザクション、および結果としてロックの持続時間とトランザクションクリーンアップタスクの問題を引き起こすパケット損失です。 CONNECT
をサポートする太陽プロキシの下で、あらゆる種類の狂気と壊れたプロキシとファイアウォールも満たしますが、すべてのトラフィックがHTTPsであると仮定し、接続が失敗したり、半開きのゾンビ状態になったりするバグのあるステートフルな接続追跡機能を備えたファイアウォール。想像できるすべてのNAT問題。通信事業者は待ち時間を短縮するためにTCP ACKを生成し、パケットロスの検出とウィンドウサイジングで発生する問題には気を付けません。ワッキーなポートブロッキング。
誰もがにHTTPを使用しているため、動作することが期待できます。これは、一般的なWebサイトがモバイルWebアプリケーションでもREST + JSON通信スタイルを使用するようになった今、特に真実です。
また、ユニークな要求トークンを使用して、冪等番号にWebサービスコールを書き込むこともできます。これにより、データベースに対して2回のアクションを実行する恐れなく、変更要求を再送信することができます。 idempotenceおよびdefinining idempotenceを参照してください。
真剣に、モバイルデバイスからのJDBCは良いアイデアのように見えるかもしれませんが、モバイルデバイスがすべて私の直接的な管理下に高信頼性の単一のWiFiネットワーク上にあったと考えても唯一の方法です。それでも、可能であれば、データベースのパフォーマンス管理の理由からそれを避けるだろう。 PgBouncerのようなものを使用して、サーバ側の多くのデバイス間の接続をプールすることができます。接続プールは大きな問題ではありませんが、紛失して放棄された接続のクリーンアップは、放棄された接続からのトランザクション。
1. Webサービスを使用している場合は、他のクライアント(ipadなど)でも動作します。 2. Spring Data Restを見てください。これは、すばやく快適なWebサービスを作成するのに役立ちます。 –