質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

4999閲覧

【SpringFramework】複数行更新するときの書き方はどうなるのか?

k499778

総合スコア599

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

0クリップ

投稿2016/07/09 08:55

現在上記タグの技術を使って業務アプリを詳細設計しています。

現在以下のような一覧画面があって、その行の「口座名」を編集して「登録ボタン」押下時に更新できる仕様(仮)です。(登録ボタンは画像にはないですがあるとお考えください)
イメージ説明

SpringFrameworkのサービスクラスでListの中の複数の要素(項目行)を更新するのですが、
そのときはどういう書き方になるのでしょうか?
知りたいのはその要素分update文を実行するのか、あるいはupdate文を1度だけ実行するだけで済む方法があるかということです。

ちらっと外部設計の中でそれはinsert文でしたが、
values以下(動的に変更する部分だけ)をListの要素分だけ繰り返し処理をするという書き方をしている部分があったので、そのような書き方ができるのかなと気になっています。

自分のイメージではListの数分繰り返し処理をして、
そのfor文の中でupdate処理を行う。なのでupdate文が複数回実行される
と思っていたので、
もし実行が1回で済む方法があれば、その方が断然パフォーマンスがいいと思うので知りたいです。

もしわかる方がいれば教えていただけると幸いです。

またListの複数行の更新の仕方、SpringFrameworkの実装方法なども教えていただけるとありがたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Spring→MySQLの実装部分に何かフレームワークを使っているのか不明なので具体的なコードは示せませんが、

SQLのUPDATE文で複数行対応できるクエリがかけるのであれば1回で完了しますし、逐次update文を投げたいのであれば、複数回のUPDATE文を投げた後にトランザクションをコミットすれば良いかと。

投稿2016/07/09 09:01

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k499778

2016/07/10 03:23

回答有り難うございます。 そうなんですね。 ちなみに複数行対応できるクエリをかけるツール?というのはどういったものなのでしょうか?普通?(拡張していない状態?)のSpringFrameworkではできないのでしょうか? また複数回のUPDATE文を投げた後にトランザクションをコミットする場合,upadate文がその度実行はされてしまうのですよね?パフォーマンスは落ちてしまいますでしょうか?
A-pZ

2016/07/10 05:13

複数行対応できるツールではありません。クエリ、つまりSQL文の書き方や、O/Rマッピングフレームワークをお使いなら、複数行を更新する条件を指定すれば可能です。 「ふつうのSpringFramework」だと残念ながら非常にあいまいな表現となってしまいます。現在Springは非常に多岐にわたっており、Webアプリケーションだけではありませんし、RDB利用のものは、spring-ormやspring-hibernateなど、プロジェクトがわかれています。 複数行のUPDATE文を実行した後にコミットした後は、UPDATE文にて実行したデータが反映されるだけです。もちろんUPDATEする回数が少ないほうがパフォーマンス面では良いでしょう。 なお、トランザクション管理をしていれば、管理していないときと比べるとパフォーマンスは低下しますが、複数行更新中にエラーが発生した場合のデータが中途半端な状態になるのを防ぐため、トランザクション境界を設定するケースは多いでしょう。
k499778

2016/07/10 23:14

回答ありがとうございます。 複数行を更新する条件を指定する。というのはO/Rマッピングフレームワークでは、条件をfor文のように繰り返し処理する書き方ができるということでしょうか? そうですね。そこは理解を深めてから質問するように致します。 トランザクションは設定するケースは多いですよね。パフォーマンスとの関連も勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問