[SpringBoot&JPA]Web階層開発
7742 ワード
[1]ホームページとレイアウト
マスタコントローラの登録
スタートバンド&jumbortron-狭いcssを適用した後
ガイドバー-Compiled CSSとJSからファイルをダウンロードし、css、jsをコピーして静的に貼り付けます.
css上のjumbortron-狭いcssファイルを作成し、講師がアップロードしたコードを貼り付けます.
[2]会員登録
会員に加入する
後にホームページに戻って会員は正常に保存して、 DBも完全に保存します
メンバー名が入力されていない場合(エラー)
[3]会員リストの表示
クエリーされた商品をSpring MVCから提供されたモデルオブジェクトに保存し、ビューに渡す
実行するビュー名を返します
📌 タイムマシンで?
を使用すると、null
は無視されます.
📌 フォーム・オブジェクトとエンティティの直接使用
フォーム・オブジェクトを使用せずに、登録および変更画面でエンティティ(メンバー)を直接使用できます.
しかしながら、スクリーン要件が複雑になると、シンボル内のスクリーンを処理する機能がますます多くなるため、シンボルはますますスクリーンに従属し、スクリーン機能によって乱雑になったシンボルは最終的にメンテナンスが困難になる.
実際の操作では、エンティティにはコアビジネスロジックしか持たず、スクリーンロジックも持たない.
画面またはAPIに適したフォームオブジェクトまたはDTOを使用します.このようにしてこそ、スクリーンまたはAPI要求をこれらに処理し、できるだけシンボルの純粋性を維持することができる.
加入した会員が会員リストでの活躍を確認できます.
[4]商品登録
商品登録表に商品を登録すると、 DBに保存されていることが確認できます.
商品登録表にデータを入力し、submitボタンを押してPOST方式で/items/new
を要求する.
商品保存完了後、直接カタログ画面redirect:/items
へ
[5]カタログ
このように商品を登録してカタログを確認すると、がよく収められていることが確認できます.
[6]商品の修正
商品登録後、カタログのデータは完全に保存され、商品修正確認を商品修正確認修正に変更する.が正常に動作していることを確認
ショートカットキー
option + option + 위아래 화살표
:multi-cursor多重選択
商品修正フォームに移動
修正ボタンをクリックして、GET方式で/items/{itemId}/edit
urlを要求します.
その結果、updateItemForm()
メソッドが実行され、このメソッドは、itemService.findOne(itemId)
を呼び出して変更する商品を照会する.
クエリ後、結果がモデルオブジェクトに表示され、ビューitems/updateItemForm
に表示されます.
商品を修正する
商品修正フォームで情報を修正し、提出ボタンをクリックし、POST方式で/items/{itemId}/edit
urlを要求し、updateItem()
の方法を実行する.
このとき、コントローラパラメータに渡されたitemエンティティインスタンスは現在、準永続状態にあります.したがって、永続的なコンテキストではサポートされず、データを変更しても変更検出機能は実行されません.
(七)けちん坊変更検出との合併(merge) merge
は実際の仕事ではあまり使われていませんが、重要な内容なので完璧です!理解する
準零速図元とは何ですか。
永続性コンテキストとは、管理されなくなったエンティティを指します.
この例では、itemService.saveItem(book)
で修正したBookオブジェクトを試します.オブジェクトはデータベースに1回格納され、識別子が存在します.このように任意に作成されたエンティティにも既存の識別子がある場合、これを準ゼロ速エンティティと見なすことができる.
この準零速図元を修正する2つの方法は?
会員に加入する
後にホームページに戻って会員は正常に保存して、 DBも完全に保存します
メンバー名が入力されていない場合(エラー)
[3]会員リストの表示
クエリーされた商品をSpring MVCから提供されたモデルオブジェクトに保存し、ビューに渡す
実行するビュー名を返します
📌 タイムマシンで?
を使用すると、null
は無視されます.
📌 フォーム・オブジェクトとエンティティの直接使用
フォーム・オブジェクトを使用せずに、登録および変更画面でエンティティ(メンバー)を直接使用できます.
しかしながら、スクリーン要件が複雑になると、シンボル内のスクリーンを処理する機能がますます多くなるため、シンボルはますますスクリーンに従属し、スクリーン機能によって乱雑になったシンボルは最終的にメンテナンスが困難になる.
実際の操作では、エンティティにはコアビジネスロジックしか持たず、スクリーンロジックも持たない.
画面またはAPIに適したフォームオブジェクトまたはDTOを使用します.このようにしてこそ、スクリーンまたはAPI要求をこれらに処理し、できるだけシンボルの純粋性を維持することができる.
加入した会員が会員リストでの活躍を確認できます.
[4]商品登録
商品登録表に商品を登録すると、 DBに保存されていることが確認できます.
商品登録表にデータを入力し、submitボタンを押してPOST方式で/items/new
を要求する.
商品保存完了後、直接カタログ画面redirect:/items
へ
[5]カタログ
このように商品を登録してカタログを確認すると、がよく収められていることが確認できます.
[6]商品の修正
商品登録後、カタログのデータは完全に保存され、商品修正確認を商品修正確認修正に変更する.が正常に動作していることを確認
ショートカットキー
option + option + 위아래 화살표
:multi-cursor多重選択
商品修正フォームに移動
修正ボタンをクリックして、GET方式で/items/{itemId}/edit
urlを要求します.
その結果、updateItemForm()
メソッドが実行され、このメソッドは、itemService.findOne(itemId)
を呼び出して変更する商品を照会する.
クエリ後、結果がモデルオブジェクトに表示され、ビューitems/updateItemForm
に表示されます.
商品を修正する
商品修正フォームで情報を修正し、提出ボタンをクリックし、POST方式で/items/{itemId}/edit
urlを要求し、updateItem()
の方法を実行する.
このとき、コントローラパラメータに渡されたitemエンティティインスタンスは現在、準永続状態にあります.したがって、永続的なコンテキストではサポートされず、データを変更しても変更検出機能は実行されません.
(七)けちん坊変更検出との合併(merge) merge
は実際の仕事ではあまり使われていませんが、重要な内容なので完璧です!理解する
準零速図元とは何ですか。
永続性コンテキストとは、管理されなくなったエンティティを指します.
この例では、itemService.saveItem(book)
で修正したBookオブジェクトを試します.オブジェクトはデータベースに1回格納され、識別子が存在します.このように任意に作成されたエンティティにも既存の識別子がある場合、これを準ゼロ速エンティティと見なすことができる.
この準零速図元を修正する2つの方法は?
商品登録表に商品を登録すると、 DBに保存されていることが確認できます.
商品登録表にデータを入力し、submitボタンを押してPOST方式で
/items/new
を要求する.商品保存完了後、直接カタログ画面
redirect:/items
へ[5]カタログ
このように商品を登録してカタログを確認すると、がよく収められていることが確認できます.
[6]商品の修正
商品登録後、カタログのデータは完全に保存され、商品修正確認を商品修正確認修正に変更する.が正常に動作していることを確認
ショートカットキー
option + option + 위아래 화살표
:multi-cursor多重選択
商品修正フォームに移動
修正ボタンをクリックして、GET方式で/items/{itemId}/edit
urlを要求します.
その結果、updateItemForm()
メソッドが実行され、このメソッドは、itemService.findOne(itemId)
を呼び出して変更する商品を照会する.
クエリ後、結果がモデルオブジェクトに表示され、ビューitems/updateItemForm
に表示されます.
商品を修正する
商品修正フォームで情報を修正し、提出ボタンをクリックし、POST方式で/items/{itemId}/edit
urlを要求し、updateItem()
の方法を実行する.
このとき、コントローラパラメータに渡されたitemエンティティインスタンスは現在、準永続状態にあります.したがって、永続的なコンテキストではサポートされず、データを変更しても変更検出機能は実行されません.
(七)けちん坊変更検出との合併(merge) merge
は実際の仕事ではあまり使われていませんが、重要な内容なので完璧です!理解する
準零速図元とは何ですか。
永続性コンテキストとは、管理されなくなったエンティティを指します.
この例では、itemService.saveItem(book)
で修正したBookオブジェクトを試します.オブジェクトはデータベースに1回格納され、識別子が存在します.このように任意に作成されたエンティティにも既存の識別子がある場合、これを準ゼロ速エンティティと見なすことができる.
この準零速図元を修正する2つの方法は?
商品登録後、カタログのデータは完全に保存され、商品修正確認を商品修正確認修正に変更する.が正常に動作していることを確認
ショートカットキー
option + option + 위아래 화살표
:multi-cursor多重選択商品修正フォームに移動
修正ボタンをクリックして、GET方式で
/items/{itemId}/edit
urlを要求します.その結果、
updateItemForm()
メソッドが実行され、このメソッドは、itemService.findOne(itemId)
を呼び出して変更する商品を照会する.クエリ後、結果がモデルオブジェクトに表示され、ビュー
items/updateItemForm
に表示されます.商品を修正する
商品修正フォームで情報を修正し、提出ボタンをクリックし、POST方式で
/items/{itemId}/edit
urlを要求し、updateItem()
の方法を実行する.このとき、コントローラパラメータに渡されたitemエンティティインスタンスは現在、準永続状態にあります.したがって、永続的なコンテキストではサポートされず、データを変更しても変更検出機能は実行されません.
(七)けちん坊変更検出との合併(merge) merge
は実際の仕事ではあまり使われていませんが、重要な内容なので完璧です!理解する
準零速図元とは何ですか。
永続性コンテキストとは、管理されなくなったエンティティを指します.
この例では、itemService.saveItem(book)
で修正したBookオブジェクトを試します.オブジェクトはデータベースに1回格納され、識別子が存在します.このように任意に作成されたエンティティにも既存の識別子がある場合、これを準ゼロ速エンティティと見なすことができる.
この準零速図元を修正する2つの方法は?
検出機能の変更(推奨)
// ItemService.java
/**
* 변경 감지 기능 사용 (이게 merge보다 나은 방법)
*/
@Transactional
public void updateItem(Long itemId, String name, int price, int stockQuantity) {
Item findItem = itemRepository.findOne(itemId);
findItem.setName(name);
findItem.setPrice(price);
findItem.setStockQuantity(stockQuantity);
}
永続性コンテキストでエンティティを再問合せし、データのメソッドを変更します.トランザクション内でエンティティを再問合せした後、変更する値を選択→トランザクションはトランザクションコミットポイントのリフレッシュ()をトリガーし、変更検出(Dirty Checking)を有効にし、データベースでUPDATE SQLを実行します.
マージ
@Transactional
void update(Item itemParam) {
Item mergeItem = em.merge(item);
}
2-1. プライマリ・キャッシュにエンティティがない場合は、データベースからエンティティを問合せ、プライマリ・キャッシュ
(メンバーエンティティのすべての値がmergeMemberにプッシュされます.したがって、mergeMember名が「メンバー1」の場合、「メンバー名」に変更されます.)
つまり。
準ゼロ速エンティティの識別子値を使用してゼロ速エンティティをクエリーする
すべてのゼロスピードシンボル値を準ゼロスピードシンボル値に置き換えます(マージ)
АААААААААААААААА
注意!
変更検出機能を使用すると、必要な属性のみを選択して変更できますが、すべての属性が変更されるため、マージ時に値がない場合はnullに更新されるリスクがあります.
(mergeはオプションの概念ではありません)
ちなみに一言。
実際の作業では、通常、更新機能は非常に限られています.ただし、集計ではすべてのフィールドが変更され、データがない場合はNullに更新されます.
連結を使用してこの問題を解決するには、「フォームの変更」画面のすべてのデータを常に保持する必要があります.
実際の操作では、通常は変更可能なデータのみが露出されるため、マージの使用はかえって面倒になります.
したがって、エンティティを変更する場合は、常に変更検出を使用してください。
Mergeは使用しないでください.
[8]注文商品
オーダーフォームに移動:
メイン画面で注文商品を選択すると、GET方式で/order
が呼び出される.
Order ControllerのcreateForm()
メソッドを呼び出し、注文する顧客情報と商品情報を注文画面に表示するので、モデルオブジェクトに入れてビューに渡します.
注文する
注文する会員と商品を選択し、提出ボタンをクリックすると、/order
urlがPOSTで呼び出され、コントローラのorder()
メソッドが実行されます.
このメソッドは、顧客識別子、商品識別子、および数量情報を受信し、受注サービスに受注を要求します.
注文が完了すると、商品注文明細のある/orders
urlに直接移動します.
[9]受注リストの取得、キャンセル
会員と商品を登録してを注文すれば、の注文リストに確認できます.をキャンセルすると、正常にCANCELに動作していることを確認します.
Reference
この問題について([SpringBoot&JPA]Web階層開発), 我々は、より多くの情報をここで見つけました
https://velog.io/@dbsrud11/SpringBootJPA-웹-계층-개발
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
会員と商品を登録してを注文すれば、の注文リストに確認できます.をキャンセルすると、正常にCANCELに動作していることを確認します.
Reference
この問題について([SpringBoot&JPA]Web階層開発), 我々は、より多くの情報をここで見つけました https://velog.io/@dbsrud11/SpringBootJPA-웹-계층-개발テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol