タグ付けされた質問 「transactions」

それらのいずれかが成功するためにすべて成功する必要がある相互に関連する操作のセット。操作が失敗すると、トランザクションのすべての操作がロールバックされます。

8
ロールバックのみとしてマークされたトランザクション:原因を見つける方法
@Transactionalメソッド内でトランザクションをコミットすることに問題があります。 methodA() { methodB() } @Transactional methodB() { ... em.persist(); ... em.flush(); log("OK"); } methodA()からmethodB()を呼び出すと、メソッドが正常に渡され、ログに「OK」と表示されます。しかし、私は得る Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:521) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393) …


1
Database.BeginTransactionとTransactions.TransactionScope
System.Transactions.TransactionScopeとEF6の違いは何Database.BeginTransactionですか? 誰かが小さな例を挙げたり、明確な違いがあるときにどちらを使用するかを説明したりできますか? PS:私のプロジェクトでは、EF6を使用しています。私はすでにドキュメントを読みましたが、あまり役に立ちませんでした。例も調べましたが、どちらかSqlConnection.BeginTransactionと言えば使用されており、MSはこれDatabase.BeginTransactionをEF6に導入しました。

4
Laravel:DB :: transaction()でtry…catchを使用する
私たちは皆DB::transaction()、複数の挿入クエリに使用します。そうすることで、それをそのtry...catch中に置くべきですか、それともそれを包むべきですか?try...catch何か問題が発生した場合にトランザクションが自動的に失敗する場合を含める必要がありますか? try...catchトランザクションのラッピングのサンプル: // try...catch try { // Transaction $exception = DB::transaction(function() { // Do your SQL here }); if(is_null($exception)) { return true; } else { throw new Exception; } } catch(Exception $e) { return false; } 反対に、DB::transaction()ラッピングトライ...キャッチ: // Transaction $exception = DB::transaction(function() { // try...catch try { // Do your …

3
Androidデータベーストランザクション
データベースを作成しました。取引をしたいのですが。その時点でテーブルにSaveCustomer()レコードを挿入するための複数のステートメントが含まCustomer, CustomerControl, Profile, Paymentれています。 ユーザーがSaveCustomer()メソッドを呼び出すと 、そのデータはこれらの4つのテーブルに移動します。トランザクションを実行するにはどうすればよいですか。1つのテーブルの挿入に失敗した場合は、すべてをロールバックする必要があります。たとえば、3番目のテーブルがレコードを挿入すると、エラーが発生し、前の2つのテーブルの挿入レコードもロールバックする必要があります。 私のコードを参照してください: public void saveCustomer(){ DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(RetailerOrderKeyActivity.this); dbAdapter.openDataBase(); ContentValues initialValues = new ContentValues(); initialValues.put("CustomerName",customer.getName()); initialValues.put("Address",customer.getAddress()); initialValues.put("CustomerPID",strPID); initialValues.put("Date",strDateOnly); long n = dbAdapter.insertRecordsInDB("Customer", null, initialValues); } 同様に他のステートメントもあります。 DBAdpterコードは次のとおりです。 public long insertRecordsInDB(String tableName, String nullColumnHack,ContentValues initialValues) { long n =-1; try { myDataBase.beginTransaction(); n = myDataBase.insert(tableName, …

3
エラーが発生した場合、usingステートメントはデータベーストランザクションをロールバックしますか?
usingステートメントにIDbTransactionがありますが、usingステートメントで例外がスローされた場合にロールバックされるかどうかはわかりません。usingステートメントがDispose()の呼び出しを強制することは知っていますが、Rollback()にも同じことが当てはまるかどうか誰かが知っていますか? 更新:また、以下のようにCommit()を明示的に呼び出す必要がありますか、それともusingステートメントによって処理されますか? 私のコードは次のようになります。 using Microsoft.Practices.EnterpriseLibrary.Data; ... using(IDbConnection connection = DatabaseInstance.CreateConnection()) { connection.Open(); using(IDbTransaction transaction = connection.BeginTransaction()) { //Attempt to do stuff in the database //potentially throw an exception transaction.Commit(); } }

3
Entity Framework6トランザクションのロールバック
EF6を使用すると、次のように使用できる新しいトランザクションがあります。 using (var context = new PostEntityContainer()) { using (var dbcxtransaction = context.Database.BeginTransaction()) { try { PostInformation NewPost = new PostInformation() { PostId = 101, Content = "This is my first Post related to Entity Model", Title = "Transaction in EF 6 beta" }; context.Post_Details.Add(NewPost); context.SaveChanges(); PostAdditionalInformation PostInformation = new …

5
「@Transactional」はサービスレイヤーまたはDAOのどこに配置する必要がありますか
まず、以前に質問と回答をしたことがあるのに、検索結果を取得できなかった可能性があります。一般的に(またはこれまでのところ常に:))サービスレイヤーでトランザクションアノテーションを定義します典型的な春の休止状態のクラッドは通常です Controller-> Manager-> Dao-> Orm。 クライアントサイトに基づいてドメインモデルを選択する必要がある状況になりました。クライアントAが私のドメインモデルを使用しているとしましょう。すべて問題ありませんが、他のクライアントサイトがWebサービスを提供し、ドメインモデルを使用していません。 どのレイヤーを置き換える必要がありますか。Webサービスからデータを取得して送り返すのはDAOである必要があると思います。つまり、2つの別々に記述されたDAOレイヤーであり、シナリオに基づいてプラグインされます。 @Transactionalサービスレイヤーに配置したときに、密結合を行っていることに気付きました(そのようなことがある場合、または疎結合がないと言う場合)。非常に多くの脳が間違っているはずがありませんか、それとも彼らですか(私はそれを疑っています)。 したがって、質問は「@TransactionalサービスレイヤーまたはDAOをどこに配置する必要があるか」です。そして、それは私が置き換える必要がある下向きのサービス層ですか。

10
Django:データベースエントリの同時変更から保護するにはどうすればよいですか?
2人以上のユーザーによる同じデータベースエントリの同時変更から保護する方法はありますか? 2番目のコミット/保存操作を実行しているユーザーにエラーメッセージを表示することは許容されますが、データを黙って上書きしないでください。 ユーザーが「戻る」ボタンを使用するか、単にブラウザを閉じて、ロックを永久に残す可能性があるため、エントリをロックすることはオプションではないと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.