[Spring Boot] 1. チャレンジスプリングガイド
12780 ワード
プロジェクトの準備をする
開発ツールの準備
インテリジェント化を利用してこのコースを使用します.
https://www.jetbrains.com/ko-kr/idea/download/#section=windows
有料バージョンを書きたいのですが、コミュニティバージョンをダウンロードしましょう.
Spring Initializarを使用したプロジェクトの作成
有料バージョンは、スマートデバイス上のスプリングガイドを簡素化します.
Communityバージョンでは、https://start.spring.io/でプロジェクトを作成できます.
スプリングアイテムの実行を試みる
MariaデータベースとSpring data Jpa
MariaDBはMySQLとほぼ同じ機能ですが、完全なオープンソースコードです.
これにより、ライセンスコストを心配することなく、AWSに接続しながらシステムを最小限のコストで実行できます.
MariaDBのインストールとデータベースの作成
インストールページのMariaDBサーバエントリを選択してインストールします.
インストール中に
root 계정의 패스워드
とUTF8에 대한 세팅
(default server's character serとしてUTF 8を使用)を確認します.インストール完了後
HeidSQL
=SQL編集機能を持つ管理ツール実行時にrootアカウントに接続する情報を入力します
Spring Data JPAを使用したプロジェクトの作成
Spring Data JPAを依存項目に入れる
build.勾配の設定
dependencies {
...
compile group: 'org.mariadb.jdbc', name: 'mariadb-java-client'
...
}
application.属性の設定spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/bootex
spring.datasource.username=***********
spring.datasource.password=***********
username,passwordとmariadbで設定されたusernameとpasswordのバインドSpring Data Jpaの概要
Java Persistence APIのORM、Java Persistence API
JPAは単純なspecであるため、specを実装する各実装体には異なる会社名またはフレームワーク名があり、そのうち
Hibernate
が最も有名である.エンティティークラスとJpa Repository
Memoシンボルクラス
package org.zerock.ex2.entity;
import lombok.*;
import javax.persistence.*;
@Entity //해당 클래스가 엔티티를 위한 크래스이며, 해당 클래스의 인스턴스들이 jpa로 관리되는 엔티티 객체라는 것을 의미
@Table(name = "tbl_memo") // 어떠한 테이블로 생성할 것인지에 대한 정보를 담기위한 어노테이션 tbl_memo 이름 테이블로 생성
@ToString
@Getter //Getter 메서드 생성
@Builder // 객체 생성 처리
@AllArgsConstructor // @Builder를 사용하기 위한 어노테이션
@NoArgsConstructor // @Builder를 사용하기 위한 어노테이션
public class Memo {
@Id //@Entity가 붙은 클래스는 pk필드를 @id로 지정해줘야한다.
@GeneratedValue (strategy = GenerationType.IDENTITY) //자동생성되기 위한 어노테이션
private Long mno;
@Column(length = 200, nullable = false) //추가적인 필드가 필요할 경우 Column으로 속성 지정 가능
private String memoText;
}
@Entity
JPAは@Entityを追加する必要があります.このクラスはエンティティのクラスで、そのクラスのインスタンスがJPAによって管理されているエンティティオブジェクトであることを示します.@Table
データベースでどのテーブルでエンティティークラスを作成するかについての説明.たとえば、@Table(name="t memo")を指定すると、生成されるテーブル名は
t_memo
テーブルとなります.@ Id 와 GeneratedValue
@Entityを持つクラスは、PK固有のフィールドを@Idと指定する必要があります.@GeneratedValue宣言を使用して、自動生成された番号を使用します.GeneratedValue(startegy=GenerationType.xx)鍵生成ポリシータイプ
AUTO(default)=JPAインプリメンテーション作成方法を決定
IDENTITY
-MYSQLに対して使用するデータベース決定生成鍵SEQUENCE-データベースのsqeuenceに基づいて鍵を生成
TABLE-鍵を生成するためのテーブルを作成する
@Colunm
他のフィールド(列)が必要な場合はnullable、nmame、lengthなどを使用します.@Builder @AllArgsConstrutor @NoArgsConstructor
オブジェクトの作成を許可
JPA設定アプリ.properties
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.show-sql=true
ddl-auto:DDL設定が自動的に作成されると、テーブルが作成されるたびに、更新されない場合はalterが作成されます.format sql=Hibernate操作によるSQL文出力
show-sql:JPA処理時に発生したSQLを表示するかどうかを決定する
Jpa Repositoryの使用
package org.zerock.ex2.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.zerock.ex2.entity.Memo;
import java.util.List;
//JpaRepository를 사용할때는 엔티티의 타입 정보(Memo 클래스 타입)와 @ID의 타입을 지정 함
// jpa는 인터페이스 선언만으로 빈 등록됨
public interface MemoRepository extends JpaRepository<Memo, Long> {
}
CRUD :Insertアクションinsert Action:save(エンティティオブジェクト)save(エンティティオブジェクト)
selectアクション:findByID(鍵タイプ)、getOne(鍵タイプ)
更新アクション:save(エンティティオブジェクト)save(エンティティオブジェクト)
deleteアクション:deleteById(キータイプ)、delete(ボディオブジェクト)
ページング/ソートの処理
ページ処理に必要なのはPageRequest作成者です(newは保護された宣言として使用できません)
オブジェクトを作成する静的修飾子of()を使用して処理します.
page.size.Sort情報を使用したオブジェクトの作成
クエリメソッド機能と@Query
動的クエリ処理機能、例えば
Spring data jpaリファレンス
主にSQLで使用するキーワードと同じです
たとえば、Memoオブジェクトのmno値が70~80の間であり、mnoの逆順序でソートしたい場合は、次の方法を追加できます.
package org.zerock.ex2.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.zerock.ex2.entity.Memo;
import java.util.List;
//JpaRepository를 사용할때는 엔티티의 타입 정보(Memo 클래스 타입)와 @ID의 타입을 지정 함
// jpa는 인터페이스 선언만으로 빈 등록됨
public interface MemoRepository extends JpaRepository<Memo, Long> {
List<Memo> findByMnoBetweenOrderByMnoDesc(long from, long to);
}
Spring Data Jpaが提供するクエリー・メソッドは便利な場合がありますが、複雑な条件を結合または処理する必要がある場合は、通常は不便です.@Queryはデフォルトでのみ使用可能です
@Queryはメソッド名を考慮せずにメソッドに追加することで処理される.
@Query("select m from Memo m order by m.mno desc")
List<Memo> getListDesc();
Spring MVCとThymeleaf
Reference
この問題について([Spring Boot] 1. チャレンジスプリングガイド), 我々は、より多くの情報をここで見つけました https://velog.io/@kimyunbin/Spring-Boot-1.-스프링-부트-도전하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol