[SpringBoot JPAを使用したWebアプリケーションの開発:発注ドメインの開発]
4036 ワード
実装機能
オーダー
受注ステータスに基づいた在庫管理
キャンセル
整理する
> casecade
エンティティ関係のカスケードを作成しています
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
private List<OrderItem> orderItems = new ArrayList<>();
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "delivery_id")
private Delivery delivery;
設定すると、プライマリ・テーブルのデータが変更されると、次のテーブルも変更されます(1つのテーブルのみが保持されていても、残りのテーブルは保持されます).ただし、テーブル関係を決定した場合にのみカスケード設定を行うことが望ましい.
関係のエンディングデザインが不確定な場合は、使用しないほうがいいです.
>Entityの作成方法
Entityで作成方法を使用してサービス層にEntityオブジェクトを作成することで、setterを呼び出して値を追加するなど、ソースを大幅に削減できます.
ただし、個別に開発されていないため、作成したエンティティの作成方法を使用することなく、エンティティオブジェクトを作成することでビジネスロジックを作成できます.
これを防止するために、基本作成者のアクセス制御者を保護するように設定し、他の場所での新しい作成を阻止することができます.
1 : protected Class() {}
2 : @NoArgsConstructor(access = AccessLevel.PROTECTED)
>Entity Classでビジネスロジックを作成する理由
JPAが使用されているため、Entity Classでフィールドの値を変更すると、変更に従って更新クエリが実行されます(JPAの利点).
Mybatisのようなフレームワークを使用すると、クエリーを作成した後に逐一実行する不便さが必要になります.
したがって、Entity値を変更するビジネスロジックは、サービス内ではなくEntity内で作成されます.
- Entity에 비즈니스 로직이 있는 것
[도메인 모델 패턴]
서비스 계층은 단순히 엔티티에 필요한 요청을 위임하는 역할
- Entity에는 비즈니스 로직이 없고 대부분 서비스 계층에서 비즈니스 로직을 처리하는 것
[트랜잭션 스크립트 패턴]
Entity는 getter, setter밖에 없고 보통 SQL을 직접 다루는 스타일에서 사용
各モードはメンテナンスの利便性に応じて使用できます(=Kebake).Reference
この問題について([SpringBoot JPAを使用したWebアプリケーションの開発:発注ドメインの開発]), 我々は、より多くの情報をここで見つけました https://velog.io/@gang6607/SpringBoot-JPA-활용-웹-애플리케이션-개발-주문-도메인-개발テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol