🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

2回答

1451閲覧

Webアプリ、バッチのコードマスタの読み込み方法について

mu-muuu

総合スコア0

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

1クリップ

投稿2021/01/31 01:53

編集2021/01/31 02:01

現在社内でJavaの勉強中で、サンプルECアプリを作っています。

アクセスするテーブルで、コードと、名称を格納したコードマスタテーブルがあります。
(例:注文ステータス、注文種別、発送区分など)
100レコード程度格納されています。

注文テーブルには上記項目がコードで格納されていて、
サーブレットから画面(JSPです)に表示したり、
別途作成したバッチプログラムからCSVに出力しようとしています。

そこで、何度もコードマスタを読み込みたくないので、
私はコードマスタの内容をメモリ上にキャッシュしておく共通部品を作ろうと思いました。

目的
0. 番号リスト画面上のセレクボックスなどを構築する。
0. 一覧表示時に、JSPで共通部品を使用してコードを名称に変換する。
0. CSV出力時に共通部品でコードを名称に変換する。

トレーナーに上記の件を相談したところ、「1.」については賛成してもらったものの、
「2. 3.」 については、そんな共通部品など使わず、注文を取ってくるSQLで一緒にコードマスタを
取って来いと指導されました。余計なことするなと怒られてしまいました。
ですので、それ以上聞くことができませんでした。

SQLが簡潔になって良いと思ったのですが、「2. 3.」の案が駄目な理由を教えてください。

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

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

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

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

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

hentaiman

2021/01/31 02:19 編集

金貰いながら現場の経験者に教えて貰える立場なんだから、まずは言われたもの作りましょう。それから自分の考えを含めたものを作りましょう。二つ作ればいいだけです。 そうすれば怒る事なく逆に親切に色々教えてくれるでしょう。 なんなら2,3だけでなく1も不要です。教える側からしたら教育の為の指示を実行もせずに1に答える事もくだらねーめんどくせーって思われていてもおかしくありません。 本気で実力をつけたいのならまずは言われたことをやってから自分の考えを追加したものを作りましょう。 ただし、オレ様アイデアではなく指示内容自体で理解が出来ずに進められない個所は指導係にどんどん質問しましょう。
guest

回答2

0

コードマスタの内容をメモリ上にキャッシュしておく共通部品

この設計次第ではあるのですが、考えられる問題点としては次のようなものでしょうか。

  • 現状コードマスタは100件程度とのことですが、これが10倍、100倍と増えた場合、メモリを大量に消費してしまう可能性がある。
  • コードマスタが更新されたにも関わらず、キャッシュ側の情報が正しく更新されず、利用者に不正確な情報を提供する可能性がある
  • SQLの発行回数が増えて、SQLの発行そのものがボトルネックになってしまう (cf.N+1問題)

SQLが簡潔になって良い

これは実際のアプリケーション開発において、とても大事な観点です。ただ、注文テーブルとコードマスタをJOINにより結合する程度であれば、それほど複雑なSQLではないとは思います。

投稿2021/01/31 02:13

neko_the_shadow

総合スコア2349

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

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

0

余計なことするなと怒られてしまいました。

単に2、3が要件に反するのではないでしょうか。
この後の教育を進める上で都合が悪い仕様が入ってしまうとか。
(とはいえ、それ程度なら怒らずに理由を言って質問者さんに取り下げてもらう方が角が立たないよな…)

私はコードマスタの内容をメモリ上にキャッシュしておく共通部品を作ろうと思いました。

これは私も場合によっては却下しますね。
商品メンテナンスでDB上のマスタに更新が入る場合、
キャッシュがある事で不具合が起こるパターンを考慮する必要があります。

2、3を実施した時に、マスタを更新したのに
CSVに出したデータが古いぞ!

など

投稿2021/01/31 02:08

編集2021/01/31 02:09
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問