DAY 52:TIL[SPRING初日]


今日から春が始まります.
以前にサーバリースで遭遇した苦痛(😭) 経験に基づいて,今回は決して見逃さない.

📚 スプリングとは?


I.概要

  • Javaは、「サーバ」を作成するために必要なWebフレームワークです.
  • SpringBoot(Spring Boot):既存のスプリング上でより速く開発するために開発されたフレームワーク
    Java vs Python:
    特性JAVA👇PYTHON方式Compile≠Interpreterコード量複雑多>簡潔開発速度遅>速言語速度速
  • II. 構成とプロセス


  • Controller
  • 手順
    ①クライアントからのリクエスト受信
    ②受け取った依頼を全てサービスに渡す
    ③応答クライアント

  • Service
  • Controllerからのクライアント要求(=ビジネスロジック)処理
  • DB情報が必要な場合は、専ら報告を行う

  • Repository
    -データベース管理(e.g.接続、切断、リソース管理)
    -DB CRUDタスクの処理

  • III.概念整理

  • Annotation(注釈,@)
    プログラムに追加情報*メタデータの役割を提供し、特別な意味や機能を持たせる技術
    *データの説明に使用するデータ
    Annotationの用途=情報提供
    •toコンパイラ(翻訳機)→コード作成構文エラーチェック
    •to開発ツール→構築または展開時自動生成コード
  • Object、Class、Instance(オブジェクト、クラス、インスタンス)
    授業中に「授業はフナ型orウサギ、対象はフナ型or状態or行為」という比喩を聞いた.以下に示すように,検索よりも分かりやすい概念整理本が見つかった.
    •オブジェクト=ソフトウェアの世界で実施される目標
    •クラス=実装対象の青写真(設計図)
    •Instance(インスタンス)=設計図に従ってソフトウェアの世界で実装されるエンティティ
  • Static
    オブジェクト(インスタンス)に属しておらず、クラスごとに管理されているため、クラスのロードが完了したらすぐに使用できます.
    Garbage Collectorの管理領域の外にあるため、ステータス内のメモリはプログラム終了時も存在する
    長所
    •すべてのオブジェクトがメモリを共有し、任意の場所で参照できます(グローバルステータス)
    •インスタンスを作成せずに呼び出すことで、時間を節約し、コード(プロセス向けのコード)をシンプル化
    短所
    •すべてのオブジェクトが共有メモリのグローバル状態であるため、エラーが発生した場合には広範囲のナビゲーションを行い、エラーを検出する必要があります.
    •メモリが不足している場合、システムのパフォーマンスが低下します(プログラムが停止してもメモリは存在します).
    •*上書きできないため、クラス拡張が制限されています
    *親から継承するメソッドを再定義します.上書きメソッドは、親の元のメソッドよりも優先されるため、子からメソッドを呼び出すときに上書きメソッドが呼び出されます.
  • Getter/Setter
    Getterは情報を「インポート」する方法であり、Setterは情報を「置き換え」する方法である.
    When and Why?
    「クラスには顧客のパスワード/決済情報のように敏感な情報があります.」これらの情報に「外部から」アクセスし、任意の値を変更すると、気まずい思いをします.このため、フィールドはpublicおよびprivateに分割され、getおよびsetを使用して「内部」から値をインポートおよび置換します.
  • Interface
    クラスで聞いたコンセプトは「クラスにメンバーが欠けているメソッドセット」で、すべての機能のみを定義します!実現しなかった.もっと詳しく知る必要があるようで、調べてみると、詳しくて親切なブログが見つかりました.
    •基本設計図は実装されておらず、下図のみ.標準規則
    •Javaで実行するクラスを指定するためのアクション
    •キーワードinterfaceclassで宣言可能
    •クラスでのimplementsキーワードの使用(クラスのextends)
    •クラスは複数のインタフェースにわたって実装可能
    When and Why?
    1)提携(提携)
    •チームで作業する場合は、事前にチームメンバーとインタフェースを設定することで、方法を決定できます.
    2)Easy to Replace(交換しやすい)
    •たとえば、条件を満たすクラスを作成して追加することで、オブジェクトを変更するたびにオブジェクトを変更する必要がないという問題を解決できます.
    •柔軟なプログラミングにより、オープンクローズの拡張オープンと変更クローズクラス間の結合(コード依存性)が低減されます.
    △実際、この部分は自分で何度も実習してこそ、よりよく理解することができる.
    3)多重継承
    •1つのクラスで複数のインタフェースを継承できるため、クラスで同時に管理できます.
  • RDBMS (Relational DataBase Management System)
    コンピュータに情報を格納し管理する技術.すべてのサービスのメインDB.
    種類はH 2、MySQL、PostgreSQL、Oracleデータベースなど.
    •H 2:*メモリDBの代表
    *サーバの実行時にのみコンテンツを保存し、サーバの停止時にはすべてのデータのデータベースを削除します.
    •MySQL:サーバの配備に使用するデータベースの1つ
  • JPA (Java Persistence API)
    JAVAがDBを使用するのを助け、*SQLを使用することなくデータを作成、照会、修正、削除できる翻訳機.
    *データの作成、読み取り、変更、削除に関する具体的な構文(CRUD)
    つまり、オブジェクト間の関係が確立されると、SQL文が自動的に生成されます.これはデータベース・フレームワークです.
    (=ORMインタフェースの集合)
    @Entity:データベースを保存するためにユーザー定義のクラス.@Entityと宣言されたクラスの名前が実際のデータベースにマッピングされたテーブル名
    @Id:プライマリ・キーが宣言された変数
    @Table:独立した名前のDBテーブルにマッピングされます.@Entityのクラス名がDBのテーブル名と異なる場合は、@Table(name=" ")フォーマットにマッピングできます.
    @Column:宣言クラスは必須ではありませんが、参照バー()が列に存在する場合は必要です.デフォルトでは、メンバー変数名に一致するDB columnがマッピングされます.@Column(name=" ")フォーマット.
  • JPARepository
    JPAに追加機能を提供するインタフェースです.
    インタフェースで検索メソッドを事前に定義することで、このメソッドを呼び出して機能を有効にできます.さらに、インタフェースは、@Repositoryなどの追加コンポーネントを追加する必要はありません.
    注意事項
    変数名はdelete(String example one)のように()では使用できないため、delete(String exampleOne)のように카멜케이스に調整する必要があります.
    「メソッド」機能「保存」(INSERT,UPDATE)findOne()のプライマリ・キーを使用して、レコード「検索」findAll()の完全なレコードを読み込みます.ソート、ページング数()削除レコード数
  • IV.JAVA構文

  • System.out.println():出力機能.soutタイプ後Tabキー入力
  • boolean : true, false. 大文字は使用できません
    -例:
  • public class Prac {
    	public static void main(String[] arg) {
              int myAge = 20;
              boolean isAdult = myAge > 20;
              boolean isKid = myAge <= 20;
    
              System.out.println(isAdult);
              System.out.println(isKid);
              System.out.println(myAge == 20);	// true
              System.out.println(myAge != 20);	// false
          }
    }
  • List<String> myList = new ArrayList<>();:タイル宣言(List).データ型のみ入力できます(順序重要orなど)
    -.add:入力
    -.get:ブラウズ
    -.remove:削除
    -例:
  • public class Prac {
    
        public static void main(String[] args) {
            List<String> myList = new ArrayList<>();
    
            String course1 = "웹개발의 봄 Spring";
            String course2 = "프론트엔드의 꽃 React";
    
            myList.add(course1);
            myList.add(course2);
            System.out.println(myList);
    
            System.out.println(myList.get(1));
    
            myList.remove(1);
            System.out.println(myList);
        }
    }

    💬 Reference


    整理GilLog|Spring Annotation
    Alfred’s Computing Weblog | Class vs Object vs Instance
    コード工場|Java staticの意味と使い方
    なぜJavaで静的を使用しないのですか?
    愚かなウサギ|Java-インタフェース(定義、使用理由、例)とは何ですか?
    Zunyの開発ブログ「Spring JPA」jpa-Jpa Repositoryを使用