問題タブ [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 - トランザクションで読み取り専用クエリを実行すると、パフォーマンスが低下しますか?
Spring AOP ベースの宣言型トランザクション管理を使用してすべてのメソッドをトランザクションとして定義すると、パフォーマンスが低下しますか? 以下の構成を参照してください。その理由は、開発者が非トランザクション メソッドに付けるメソッド名がわからないからです。1 つのオプションは、ワイルド カード リストから始めて、メソッド名が定義されたリストに該当しない場合、開発者がリストを更新することです。
spring - JodaTime および BeanPropertySqlParameterSource
状況は次のようなものです。
PostgreSQL データベース テーブルには次のフィールドdateAdded
があります。timestamp
Pojo Model オブジェクトは、このフィールドを次のようにマップします。
私の Dao 実装は Spring JDBC テンプレートにあり、次のようになります。
クライアントからモデルを読み取り、 を使用してオブジェクトを構築します@Model
。これまでのところ、すべて問題ありません。これを実行すると、データベースは次のような例外をスローします。
[Erwin の編集]: データベースから例外が発生していないことが判明しました。
多くのフィールドが含まれているため、完全な INSERT ステートメントを実装して手動で書式設定を行いたくありません。
ここで可能な最善の解決策は何ですか? toString()
すべてのDateTime
通話を構成する方法はありますか。DateTime から継承したクラスを作成することも考えましたが ... うーん、それは最終的なものです。
--
編集
Erwin によると、DateTime 値 '2011-10-10T21:55:19.790+03:00' をダミー テーブルに挿入してテストしたところ、機能しています。しかし、JDBC を扱うことはできません。JDBC ドライバーに関連するものはありますか?
java - JodaTime DateTime をサポートするための BeanPropertyRowMapper のオーバーライド
私のドメイン オブジェクトには、いくつかの Joda-TimeDateTime
フィールドがあります。SimpleJdbcTemplate を使用してデータベースの値を読み取る場合:
患者の患者 = jdbc.queryForObject(sql, new BeanPropertyRowMapper(Patient.class), patientId);
失敗するだけで、驚くべきことに、エラーはログに記録されませんでした。timestamp
解析DateTime
がJdbcで機能していないためだと思います。
継承してオーバーライドし、 allとをBeanPropertyRowMapper
に変換するように指示することができれば、それは素晴らしいことであり、余分なコードを大幅に節約できます。java.sql.Timestamp
java.sql.Date
DateTime
何かアドバイス?
java - パラメータがプロシージャに渡されていません
Javaを使用してmssqlサーバーでプロシージャを呼び出すのに問題があります。org.springframework.jdbc.BadSqlGrammarExceptionが発生し続けます
これが私のコードです:
スタックトレースは、「@ KT」が提供されていないことを示していますが、それは正しくありません。
私がここで間違っていることについて何か考えはありますか?
これはスタックトレースです
ありがとう
Gunnlaugur
java - simpleJdbcTemplate複数行フェッチ
SimpleJdbcTemplateを使用して、データベースからレコードのリストをフェッチしています。各レコードは、データモデルオブジェクトに対応しています。私はインターネットでたくさん検索しましたが、一般的な行マッパーを使用してデータベースから複数の行をフェッチする方法をまだ理解できません。
SampleObj型のオブジェクトのリストをフェッチする必要があるとします。
パラメータ化された行マッパーをどのように定義しますか?SampleObjタイプのオブジェクトのリストを取得するにはどうすればよいですか?
行マッパーを作成しようとすると、行マッパーからの戻りタイプは常にリストではなく単一のオブジェクトとして検出されます。助けてください。
java - Spring-スタンドアロンライブラリとしてのJDBC
Springコンテナを使用しない小さなアプリケーションがあります。今、このアプリケーションがデータベースにアクセスする必要があります。いくつかの小さなクエリだけで、複雑なことは何もありません。これは純粋なJDBCで実行できますが、Spring-JDBCライブラリを実際に利用したいと思います。私の懸念は、アプリケーションにあまり多くのSpringを導入せずに簡単に使用できるかどうかです。「Springが多すぎる」とは、Springコンテナ、過剰な外部ライブラリの依存関係などを作成する必要があることを意味します。アドバイスしてください。
oracle - PreparedStatementCreatorを使用してレコードを挿入します(OracleおよびPostgreSQLで実行する必要があります)
SpringJdbcPreparedステートメントを使用してレコードをテーブルに挿入しようとしています。このコードは、PostgresとOracleで実行する必要があります。挿入後、挿入したレコードキーを読み取る必要があります。
SpringドキュメントのJDBCの章で以下のコードを見つけましたが、「これはOracleで動作します」と書かれています。
こちらのリンクを参照してください(セクション12.2.8)。
これはPostgresでうまく機能し、レコードを挿入し、挿入されたレコードキーをkeyHolderで読み取ることができます。ただし、Oracleでは、以下のエラーメッセージで失敗します...
[junit] STDOUT [ERROR] [2011.11.0401:26:04].....-テスト......失敗しました。[junit]メッセージ:PreparedStatementCallback; SQL []; ORA-01400:("SOME_USER"。"SOME_TABLE"。"ID")[junit]にNULLを挿入できません。ネストされた例外はjava.sql.SQLIntegrityConstraintViolationExceptionです:ORA-01400:NULLを("SOME_USER"。"SOME_TABLE"。"ID")に挿入できません
これがコードです...
注:私はojdbc6.jar(Oracle jdbc jar)、commonsdbcpjarを使用しています
これがapplicationContextdataSourceBeanです
テーブルには、PostgresとOracleの両方にシーケンスがありますsome_table_id_seq
。このコードをPostgres(開発マシンで実行)とOracle(本番で実行)で機能させる必要があります。どんな助け/アイデアもありがたいです。ありがとうございました。
spring - チェックされた例外とチェックされていない例外でのトランザクションのロールバック
PostgreSQL と共に Spring JDBC テンプレートを使用しています。以下は私の構成データソースとトランザクション設定です:
私のビジネスレイヤーでは、次のことを行っています。
そんな感じ。私が必要とするのは、このメソッドから例外 (チェック済みまたは未チェック) がスローされるたびに、これまでに実行されたすべてのデータベース更新をロールする必要があることです。
これは、現在のコードでは発生していません。
私は実際に何が欠けていますか?
spring - SpringのNamedParameterJdbcTemplate(3.0.5.RELEASE)
このクラスを使用しようとしていますが、返される行を制限する方法がわかりません。プレーンJdbcTemplateには、最大行と最大フェッチサイズセッターがあります。NamedParameterJdbcTemplateから同様の機能を引き出す方法はありますか?
java - NamedParameterJdbcTemplate jconnect 10 進数の問題
NamedParameterJdbcTemplate
テーブルにデータを挿入するために使用しています。(Spring 2.5.3/Java 1.6) jconnect ドライバーを使用して sybase に接続していjdbc:sybase:Tds:<Server>:<Port>
ます。何らかの理由で、10 進数値の小数部分が切り捨てられます。
jtds ドライバー ( jdbc:jtds:sybase://<Servername>:<Port>
) を使用すると、同じコードで正常に動作します。
jconnが他のコードで使用されているため、jtdsを使用できません。
Java オブジェクトでは、フィールドは double として定義されます。データベースでは、フィールドは float として定義されています (精度のある数値は機能しません)。
どんな助けでも大歓迎です。