問題タブ [spring-jdbc]
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.
java - シンプルな jdbc ラッパー
アプリケーションにデータ アクセス コードを実装するには、jdbc をラップするフレームワークが必要です (スケーラビリティのため、ORM は選択しません)。
私が使っていた最もクールなフレームワークはSpring-Jdbcです。ただし、私の会社のポリシーは、外部依存、特にSpring、J2EEなどを避けることです。そのため、Spring-jdbcに似た機能を持つ独自の便利なjdbcフレームワークを作成することを考えています:行マッピング、エラー処理、java5のサポート機能、ただしトランザクション サポートなし。
そのような jdbc ラッパー フレームワークを作成した経験のある人はいますか? 他の jdbc ラッパー フレームワークを使用した経験がある場合は、その経験を共有してください。
前もって感謝します。
java - Spring JdbcTemplate とスレッド化
JdbcTemplate
Swing でa を使用して挿入を実行するために Thread をフォークしても安全ですか。
これはロギング イベントであり、知覚されるパフォーマンスにできるだけ影響を与えたくありません。
java - IoCコンテナの外で簡単なSpring JDBCトランザクションを行うには?
私が取り組んでいるプロジェクトは、すべてのボイラープレートの栄光でストレートな JDBC データ アクセスを使用し、トランザクションを使用しません。特に現在いくつかの変更が加えられているため、トランザクションを使用し、データ アクセス メソッドの記述方法を簡素化することが重要だと感じています。このプロジェクトはかなり前から存在しており、ORM フレームワークには適していません。また、多くのシングルトンを使用しており (うーん)、もつれをほどいて依存性注入を使用できるようにすることは、かなりの作業量になると思います。
Spring JDBC のインターフェース、特にSimpleJdbcTemplate
. 私の質問は、すべてのデータアクセス方法でプログラムで何かを設定したり、Spring IoC コンテナーまたは AOP を使用したりせずに、単純な (サーブレット要求ごとの) トランザクションを有効にする方法についてです。に似たインターフェースで終わる独自のアーキテクチャをいじってみましたが、リクエストのコンテキストで ( を介して)SimpleJdbcTemplate
リクエストのコンテキストで呼び出しが行われたときに、単一のリクエストローカル接続とトランザクションを使用できます。うまく機能しているように見えますが、Spring JDBC のような優れた外部ライブラリを使用することが望ましいと思います。ServletRequestListener
ThreadLocal
誰でもこれを経験したことがありますか?
java - postgresql クエリの大きな ResultSet
postgresql データベースのテーブルに対してクエリを実行しています。データベースはリモート マシン上にあります。このテーブルには、postgresqlパーティショニング機能を使用した約 30 のサブテーブルがあります。
クエリは、約 180 万行の大きな結果セットを返します。
私のコードでは、春の jdbc サポート、メソッドJdbcTemplate.queryを使用していますが、RowCallbackHandlerが呼び出されていません。
私の推測では、コードを呼び出す前に、postgresql jdbc ドライバー (私はバージョン 8.3-603.jdbc4 を使用しています) が結果をメモリに蓄積しています。fetchSize 構成でこれを制御できると思いましたが、試してみましたが、何も変わりません。postgresqlマニュアルが推奨するようにこれを行いました。
このクエリは、Oracle XE を使用したときに正常に機能しました。しかし、Oracle XE では使用できないパーティショニング機能のために、postgresql に移行しようとしています。
私の環境:
- Postgresql 8.3
- Windows Server 2008 エンタープライズ 64 ビット
- JRE 1.6 64 ビット
- 春 2.5.6
- Postgresql JDBC ドライバー 8.3-603
java - 春-@Transactional-バックグラウンドで何が起こりますか?
メソッドにアノテーションを付けたときに実際に何が起こるか知りたい@Transactional
ですか?もちろん、Springがそのメソッドをトランザクションでラップすることは知っています。
しかし、私には次の疑問があります。
- Springがプロキシクラスを作成すると聞きましたか?誰かがこれをもっと深く説明できますか?そのプロキシクラスには実際に何が存在しますか?実際のクラスはどうなりますか?そして、Springが作成したプロキシクラスをどのように見ることができますか
- また、Springのドキュメントで次のことを読みました。
注:このメカニズムはプロキシに基づいているため、プロキシを介して着信する「外部」メソッド呼び出しのみがインターセプトされます。つまり、「自己呼び出し」、つまりターゲットオブジェクト内のメソッドがターゲットオブジェクトの他のメソッドを呼び出すと、呼び出されたメソッドに
@Transactional
!のマークが付いていても、実行時に実際のトランザクションが発生することはありません。
出典:http ://static.springsource.org/spring/docs/2.0.x/reference/transaction.html
自己呼び出しメソッドではなく、外部メソッド呼び出しのみがトランザクションの下にあるのはなぜですか?
java - SimpleJdbcTemplateおよびnullパラメーター
SimpleJdbcTemplateとMapSqlParameterSourceを次のように使用しています。
typeId
(はLong
)の場合null
、クエリは次のようになります。
私はそれが生成することを期待しますが
私はこの問題を報告しました、そして、応答はそれでした
クエリパラメータに基づいて適切なSQLステートメントを提供する必要があります。
その結果、私のコードにはnullチェックが散らばっています。
に送信されたnullパラメータを処理するより洗練された方法はありますSimpleJdbcTemplate
か?
oracle - 結果セットなしでJDBCSpringを使用してBLOBを読み取る
出力パラメータでBLOBを返すOracleストアドプロシージャがあります。
JDBCSpringを使用してこのデータを読み取りたい。ただし、DefaultLobHandler(およびOracleLobHandlerだと思います)getBlobAsBytes()には結果セットが必要です。
結果セットではなくoutパラメーターしか持っていない場合、どうすればblobデータを取得できますか?
java - プログラムでSpringのJdbcTemplateを使用するにはどうすればよいですか?
JdbcTemplate
以下に示すように、Springconfigを介して構成されたSpringを使用します。データソースを挿入せずにこれを行う方法はありますか?JdbcTemplate
プログラムでインスタンスを作成し、を使用してデータソースを「初期化」したいと思いますTheOracleDS
。
現在の構成:
Javaクラス
春の設定
Oracleデータソース構成
更新:私がこれを求めている理由は、依存性注入/SpringにBeanを管理させることを完全に信じているわけではないからです。
java - SpringSimpleJdbcTemplateからすべてのテーブル名のリストを取得します
SpringのSimpleJdbcTemplateを使用して、データベース内のすべてのテーブル名のリストを取得する方法はありますか?
クエリ対象のデータベースは、何らかの形で役立つ場合はOracleです。ありがとう。
java - クラス階層を持つSpring JDBC RowMapper
Spring JDBC を使用したクラス階層のマッピングに関して、コミュニティが「ベスト プラクティス」と見なしているものを知りたいと思いました。
本格的な ORM ツールを使用することはできませんが、Spring JDBC を使用して、JDBC の退屈な性質を軽減しています。非常に頻繁に利用するクラスの 1 つに BeanPropertyRowMapper があります。これは、使いやすさと、結果セットから型を区別しない Bean プロパティへのアクセスを可能にする機能のためです。
すべてが 1 つのテーブルにマップされるクラス階層があります (この小さなクラス階層では、階層ごとのテーブル アプローチを採用しています)。そのため、テーブルには、実際にインスタンス化する必要があるクラスを決定するために使用できる classId 列が含まれています。元。1 = マネージャー、2 = 従業員、3 = 請負業者。これらはすべて「人物」ですが、人物の各サブクラスには、そのクラスに固有のいくつかの属性があります。
私の最初の考えは、BeanPropertyRowMapper のサブクラスを作成し、このロジックを挿入して、「列 A = 1 の場合は Manager をインスタンス化し、通常のバインディングを実行する」ということです。
これは合理的なアプローチのように思えますか? あなたのために働いた他の提案はありますか?