問題タブ [ibatis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hibernate - HibernateとIbatisのキャッシング
infinispanまたはehcache/terracottaを使用した第2レベルのキャッシュを使用すると、Hibernateアプリを簡単に高速化できますが、ibatisにはキャッシュ用に実装するためのシンプルなインターフェイスしかありません。また、休止状態はデータに関するより多くの情報を知っているため、キャッシュの改善にも役立ちます。反対に、ibatisのシンプルさもその力であり、両方にキャッシングを使用しない場合は、休止状態よりも高速です。
私の質問は; 2次キャッシュでhibernateを使用し、そのインターフェイスにキャッシュ実装でibatis3を使用する場合、データアクセス層の候補としてより高速になりますか?
乾杯、
java - Hibernate か iBatis か何か?
私のプロジェクトでは、実行時にデータベースを切り替える必要があります。Hibernate を使用しようとしましたが、オブジェクトをデータベース内のテーブルにマップする必要がある場所に行き詰まりました。問題は、接頭辞の付いたいくつかのテーブルがあることです:documents2001、documents2002 ...理解したように、実行時にクラスをテーブルにマップできません。iBatis を使用してみましたが、問題は実行時にデータベースが変更されることです。iBatis では、これを行うのはかなり困難です。\
多分いくつかのアドバイス、私は何を使うべきですか?
私の要件:
- 実行時に異なるデータベースに接続する機能
- 実行時にテーブルを変更する機能 (クラスが Hibernate のようにテーブルにマップされている場合)。
更新:
わかりました、説明します:
実行時に異なるデータベースに接続できるアプリケーションを作成する必要があります。アプリのユーザーは、接続するデータベースを選択できます。すべてのデータベースは同じ構造です。これに加えて、ユーザーはデータベース内のテーブルを切り替えることができます。テーブルは同じ構造です。
- Hibernate を使用できないと仮定した理由: Hibernate では、クラスがテーブルにマップされているため、実行時にテーブルを変更できません。これにより、接続できるテーブルを選択できなくなります。
- なぜ私はiBATISを使用できないと思いました。iBATIS では、実行時に別のデータベースに接続するのは非常に困難です。そのため、ユーザーは実行時に別のデータベースに接続できません。
多分私が使用できる別のツールがありますか?
java - ibatis を使用して新しく挿入された行の ID を取得する際の同時実行の問題
iBatis/Java と Postgres 8.3 を使用しています。Ibatis で挿入を行うときは、ID を返す必要があります。
次の表を使用して質問を説明します
CREATE TABLE sometable ( id serial NOT NULL, somefield VARCHAR(10) );
。シーケンスsometable_id_seq
は、create ステートメントを実行することによって自動生成されます。
現時点では、次のSQLマップを使用しています:
これは、新しく挿入された ID を取得する ibatis の方法のようです。Ibatis は最初に INSERT ステートメントを実行し、その後シーケンスに最後の ID を要求します。
これが多くの同時挿入で機能するかどうかは疑問です。
これにより問題が発生する可能性はありますか? 間違った挿入のIDを返すのが好きですか?
( ibatis で INSERT .. RETURING .. ステートメントを使用する方法に関する私の関連する質問も参照してください)
java - Ibatis を使用したインサートの ID を返す方法 ( RETURNING キーワードを使用)
iBatis/Java と Postgres 8.3 を使用しています。Ibatis で挿入を行うときは、ID を返す必要があります。
次の表を使用して質問を説明します
CREATE TABLE sometable ( id serial NOT NULL, somefield VARCHAR(10) );
。シーケンスsometable_id_seq
は、create ステートメントを実行することによって自動生成されます。
現時点では、次のSQLマップを使用しています:
これは、新しく挿入された ID を取得する ibatis の方法のようです。Ibatis は最初に INSERT ステートメントを実行し、その後シーケンスに最後の ID を要求します。
これが多くの同時挿入で機能するかどうかは疑問です。(この質問で説明)
ibatis で次のステートメントを使用したいと思います。
INSERT INTO sometable ( somefield ) VALUES ( #value# ) RETURNING id;
しかし、sqlMap内で使用しようとすると、<insert>
ibatisはIDを返しません。<selectKey>
タグが必要なようです。
だからここに質問があります:
上記のステートメントを ibatis で使用するにはどうすればよいですか?
orm - IBatis SQLマップの保守/自動生成?
私はちょうど新しい仕事を始めて、地獄からプロジェクトを継承しました。地獄={2年のスケジュール超過、過度に複雑、OracleサーバーとSQLサーバーの両方を使用}
Oracleサーバーには100以上のストアドプロシージャがあり、それぞれにIBatisSQLマップがあります。同じ結果マップを共有するものもあります。DBAは、店舗の手続きを毎日変更するのが好きで、教えてくれません。
質問:ソリューション内のすべてのIBatisSQLマップを調べることができるツールはありますか?理想的には、次のことを確認します。
- ストアドプロシージャが存在します
- ストアドプロシージャのパラメータは、パラメータマップのパラメータと一致します
- ストアドプロシージャの結果[列名]は、結果マップの結果と一致します
- ストアドプロシージャの結果には、結果マップで指定されたものが欠落していません
- 結果マップのオブジェクトプロパティのタイトルは、結果マップにリストされているものと一致します
背景:私は通常、SQLServerとSubSonic2.2だけをORMとして使用しています。このようにコマンドを実行するだけで、DALが魔法のように自動生成されます。このようにして、必要な列が欠落している場合でも、わかりやすいコンパイル時エラーが発生し、混乱を招く実行時エラーは発生しません。ここで使用できる同様のツールはありますか?
ご協力いただきありがとうございます!
ibatis - iBatisで保存されたパッケージ関数をマップする方法は?
私は現在使用しています
何が欠けている ?
java - Ibatis : sqlmap xml 内の Ibatis resultmap サブセレクトに行ハンドラを追加する方法はありますか?
以下の単純化された例のように、サブ選択を介してリンクされた2つのibatis sqlマップがあります。
結合と関連付けによって返される line オブジェクトのコレクションを含む order オブジェクトがあります。注文明細を返すネストされた関連付けによって返されるすべての明細に対して、いくつかの行ハンドラー機能を実行したいと考えています。
これは、OrderLine オブジェクトのリストのみのクエリのために spring sqlmapclienttemplateを呼び出すときにIListRowHandlerをqueryWithRowHandler呼び出しに渡すことで実現できることを知っていますが、呼び出しを行うときにサブセレクト コレクションで行ハンドラーを使用することはできません。親の sql マップでのみ、この例の順序で。
行ハンドラ クラスを特定の結果マップまたは ibatis SQL マップ内の選択ステートメントに宣言的に割り当てる方法はありますか? これは私が感じるべき機能の種類であるため、そこにある必要があります。または、完全に構築された注文オブジェクトを調べて事後にそれらを操作するのではなく、サブ選択によって返される行オブジェクトの各インスタンスを変更することについての提案を受け入れます。
java - 5000 レコードのテーブルで MySQL のようなクエリの実行が非常に遅くなる
本番サーバーでこの問題が発生しています。アプリケーションスタックは、
- Tomcat 6.0.18 上の Java Web アプリケーション
- iBatis データ アクセス レイヤー
- MySQL 5.0 データベース
- CentOS
システムは、約 256 MB のメモリを持つ仮想サーバーにデプロイされます。
本当の問題:
のようなクエリ、
約 10 秒で実行されますが、次のクエリを実行すると、
上記のクエリを実行した直後に、システムは無期限の処理に入り、最終的に Tomcat を強制的に再起動します。
テーブル統計: - レコード数: 5000 - 主キー: コード
同じクエリ PHP MyAdmin は約 4 秒で実行されます。
MySQLの問題であると思いますか? これをデバッグするアイデア。現在、詳細なログを有効にしており、調査結果でこの質問を更新し続けますが、データベースの洞察をいただければ幸いです。
java - dot(。)文字を使用したibatisjava.util.Mapパラメーター
プロパティ名が「xx.xx」のパラメータMapがありますが、Ibatisは「xx.xx」という名前のプロパティを認識できません(「xxxx」は問題ありません)。
名前にdot(。)文字が含まれているMapプロパティを使用するにはどうすればよいですか?または、ドット(。)を削除する必要があります。
どうもありがとう
タンホアン
java - 文字列を VARCHAR フィールドに渡すときのサポートされていない SQL タイプ 1111
私はしばらくこれに頭を悩ませてきました。
Java コードで iBatis を使用して、Sybase DB にある Stored Proc を実行しています。
ストアド プロシージャはいくつかのパラメータを予期しています。それらのいくつかは次のように宣言されていますVARCHAR (6)
したがって、私の iBatis マッピングでは、これらのパラメーターに対して次のことを行いました。
ただし、これを行うと、次のエラーが発生します。
そこで、マッピングを次のように変更しました。
上記のエラーは解消されましたが、現在、パラメーターはSP に渡されたsearchUserId
値を取得しています。null
私は自分のJavaコードから私が渡していないことを確信していますnull
。
誰かがこの問題に直面しましたか? マッピングを何に変更すればよいですか??