[SpringBoot&JPA]メンバードメイン開発


[1]会員ライブラリ開発


option + command + N : Inline



📌 sqlとjpqlの違い

  • sql:クエリーテーブル
  • jpql:クエリーエンティティ
  • 機能

  • save()
  • findOne():ワンポイントクエリ
  • findAll():クエリーリスト
  • findByName()
  • ぎじゅつ

  • @Repository:スプリング空孔として登録し、JPA異常をスプリングベース異常
  • に変換
  • @PersistenceContext:エンティティーマネージャ
  • @PersistenceUnit:エンティティーマネージャファクトリ注入(emあり、ほとんど使わない)
  • [2]開発会員サービス


    👩🏻‍💻 コメント説明しましたが、ググググを見たほうがいいです。


    ぎじゅつ

  • @Service
  • @Transactional:トランザクション、永続性コンテキスト
    -readOnly=true:データを変更しない読み取り専用メソッド.永続性コンテキストをリフレッシュしないことで、パフォーマンスを少し向上
    -データベースドライバがサポートされている場合、データベースのパフォーマンスは向上します
  • @Autowired:共通コンストラクション関数Injection.コンストラクション関数を1つでスキップできます.
  • 機能

  • join()
  • findMembers()
  • findOne()
  • setter注入方法

    // MemberService.java
        private final MemberRepository memberRepository;
        
        // setter 인젝션(필드에 바로 주입하는 것이 아니라 setter를 통해 주입)
        @Autowired
        public void setMemberRepository(MemberRepository memberRepository) {
            this.memberRepository = memberRepository;
        }

    オブジェクトの作成方法(setterではなく推奨)

    // MemberService.java
        private final MemberRepository memberRepository;
    
        // 생성자 인젝션 방법. 스프링이 뜰 때 생성자에서 인젝션 해줌(이후 변경될 위험이 사라짐)
        // 생성자가 지금처럼 딱 하나만 있는 경우에는 스프링이 자동으로 인젝션 해줘서 어노테이션 생략해도 됨
        @Autowired
        public MemberService(MemberRepository memberRepository) {
            this.memberRepository = memberRepository;
        }
  • 変更できないセキュリティ・オブジェクトを作成します.
  • コンストラクタが1つある場合は@Autowiredを省略できます.
  • finalキーワードを使用すると、コンパイル時にmemberrepositoryを設定しないエラーを確認できます.(通常はデフォルトジェネレータの追加時に検出されます)
  • @RequiredArgsConstructorメソッド(最も簡単な方法、講師優先)

    @RequiredArgsConstructor    // final이 있는 필드만 가지고 생성자를 만들어줌
    public class MemberService {

    [3]会員機能のテスト

  • 成功裏加入会員
  • 会員登録時に同一名称を使用できない
  • command+shift+T:テストケースの作成


    persist()を実行してもinsertクエリはデータベースに送信されません.em.flush();:永続性コンテキストで発生した変更をデータベースに反映

    ぎじゅつ

  • @RunWith(SpringRunner.class):集積ばね試験
  • @SpringBootTest:スプリングを起動してテストします(動作するには@Autowiredが必要です)
  • @Transactional:テストサポートを繰り返します.テストを実行するたびにトランザクションが開始され、テストが終了するとトランザクションが強制的にロールバックされます(このアクションはテストケースでのみ使用されます)
  • 機能

  • 会員入金テスト
  • テスト冗長メンバー異常処理
  • ああ、、私は今までファイルの構造を変にしていましたが、
    domainにはrepositoryディレクトリとサービスディレクトリが含まれており、テストケースは常に失敗します.


    テストケースの設定


    テストはキャビネットが隔離された環境で実行し、完了したらデータの初期化を行うことが望ましい.
    この点では、メモリDBを使用するのが理想的です.
    また、通常のテストケースで使用されるスプリング環境とは異なり、アプリケーションを実行する環境は通常異なるので、異なるプロファイルを使用することが望ましい.
    test/resourcesファイル/アプリケーションを作成します.コピーyml
    また,アノテーション処理も正常に動作するのは,何の条件もなければメモリモードで自動的に動作するため,正常に動作するためである.driver-classは、現在登録されているライブラリを表示および参照し、ddl-autoおよびcreate-dropモードで実行します.
    このため、データソースやJPAの追加設定は不要です.