Springアプリケーションの最初から最後まで3)-データベース操作
Spring Data JDBCというO/R Mapperでデータベース操作部を作成します.
作る部分はこの部分です
Spring Bootプロジェクトのアプリケーション.propertiesは、プリファレンスパラメータを実行するためのファイルです.
前の記事で作成したaccountdbに接続するには、設定する必要があります.
O/R MapperはSpring Data JDBCを使用し、RepositoryImplはSpring Data JDBCによって自動的に作成されます.
したがって、このプロジェクトで直接記述する必要があるのは
サービス処理に必要なリソースを実行します.
DBとしては、Entityと同じ言葉と言えるでしょう.
DB内の1行のテーブルに対応するクラス.
Account.java
Repositoryは、DB構成データ操作のみを定義するインタフェースです.
Repositoryインタフェースでは、Spring Dataは
AccountRepository.java
メソッドのタイプは次のとおりです.
CRUD Repositoryメソッドタイプ
SpringBootアプリケーション起動クラス
AccountApplication.java
mainメソッドはexecuteメソッドを呼び出し、executeメソッドはsetupメソッドを呼び出します.
setupメソッドで
saveメソッドは、エンティティを格納するメソッドです.したがって、エンティティは空ではありませんが、エンティティが
指定したエンティティをデータベースに保存します.
実行結果
SQL DBは、クエリ文を正常に実行することもできます.
それらをfor文の形式に出力する方法.
実行するために、
ここで、IDはマスターキーの2を超えている.
findByIdメソッドの戻り値は
nullの値がある可能性があるので、オプションで値を入力できます.
Optionalメソッド
値が存在しない場合は、運転時異常-
同様に、
前にsaveについて説明しましたが、省略してください.
正常に動作していることを示します.
ID 2のエンティティが削除されます.
正常に動作.
作る部分はこの部分です
データベース接続
aplication.属性の設定
Spring Bootプロジェクトのアプリケーション.propertiesは、プリファレンスパラメータを実行するためのファイルです.
前の記事で作成したaccountdbに接続するには、設定する必要があります.
src/main/resources
のapplication.properties
ファイルを開いて修正します.spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://mysql 주소./accountdb
spring.datasource.username=ID
spring.datasource.password=PASSWORD
driver-class-name
の設定は同じです.url
はlocalhostに設定してもよいし、AWSのようなクラウドコンピューティングサービスのエンドポイントを設定してもよい.username
とpassword
を設定として入力します.データベース操作処理の作成
O/R MapperはSpring Data JDBCを使用し、RepositoryImplはSpring Data JDBCによって自動的に作成されます.
したがって、このプロジェクトで直接記述する必要があるのは
Domain Object
およびRepository
である.ドメインオブジェクトの作成
サービス処理に必要なリソースを実行します.
DBとしては、Entityと同じ言葉と言えるでしょう.
DB内の1行のテーブルに対応するクラス.
src/main/java/
からentity
パッケージを追加し、Account
クラスを追加します.Account.java
package com.example.account.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
/**
* account 테이블용 Entity
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Account {
// 식별 ID
@Id
private Integer key;
// 회원 id
private String id;
// 회원 이름
private String name;
// 회원 이메일 주소
private String mail;
// 회원 비밀번호
private String password;
}
@Data
構文はクラスを付与し、すべてのフィールドにgetter/setterにアクセスできます.@NoArgsConstructor
操作自動生成基本生成器にクラスを付与@AllArgsConstructor
操作により、クラスに与えられたコンストラクション関数(Constructor)が生成され、すべてのフィールドの初期化値が引数として取得される.@Id
は、テーブル内のプライマリ・キーに対応するフィールドIDを提供する.レポートの作成
Repositoryは、DB構成データ操作のみを定義するインタフェースです.
src/main/java
からrepository
パケットを追加し、AccountRepository
インタフェースをパケットに追加します.RepositoryImplの作成
Repositoryインタフェースでは、Spring Dataは
CrudRepository
を継承し、RepositoryImpl
を生成する.CrudRepository
の型パラメータは、Entity型Account
および@Id
の説明を有するInteger
を順次指定する.AccountRepository.java
package com.example.account.repository;
import com.example.account.entity.Account;
import org.springframework.data.repository.CrudRepository;
/**
* Account 테이블의 RepositoryImpl
*/
public interface AccountRepository extends CrudRepository<Account, Integer> {
}
Spring Dataが提供するCurdRepository
を継承することにより、CRUDを自動的にサポートする方法を使用することができる.メソッドのタイプは次のとおりです.
CRUD Repositoryメソッドタイプ
<Account, Integer>
は、格納オブジェクトのオブジェクトタイプおよび格納オブジェクトのプライマリ・キー・タイプを指定する.データベース操作処理の確認
SpringBootアプリケーション起動クラス
AccountApplication
フィールドに、AccountRepository
と@Autowired
と入力し、AccountApplication
の動作状態を確認します.登録処理の確認
src/main/java/AccountApplication.java
に追加:AccountApplication.java
package com.example.account;
import com.example.account.entity.Account;
import com.example.account.repository.AccountRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class AccountApplication {
public static void main(String[] args) {
SpringApplication.run(AccountApplication.class, args).getBean(AccountApplication.class).execute();
}
@Autowired
AccountRepository repository;
/**
* 실행 메소드
*/
private void execute() {
// 등록처리
setup();
}
/**
* 2개의 계정 추가
*/
private void setup() {
// 엔티티 생성
Account account1 = new Account(null, "aaaa", "가나다","[email protected]","11111");
// 등록
account1 = repository.save(account1);
// 등록 확인
System.out.println("등록된 데이터: " + account1);
// 엔티티 생성
Account account2 = new Account(null, "bbbb", "James","[email protected]","22222");
// 등록
account2 = repository.save(account2);
// 등록 확인
System.out.println("등록된 데이터: " + account2);
}
}
@Autowired
注入AccountRepository
.mainメソッドはexecuteメソッドを呼び出し、executeメソッドはsetupメソッドを呼び出します.
setupメソッドで
CrudRepository
のsaveメソッドを継承するように呼び出されます.saveメソッドは、エンティティを格納するメソッドです.したがって、エンティティは空ではありませんが、エンティティが
@Id
の場合、自動的に反映され、INSERTクエリ文がSQLに投げ込まれます.指定したエンティティをデータベースに保存します.
実行結果
SQL DBは、クエリ文を正常に実行することもできます.
すべての検索をチェック
AccountApplicaion
クラスに以下のメソッドを追加private void showList() {
System.out.println("---전체 검색 시작---");
// Repository를 사용하여 모든 내역을 얻는 결과
Iterable<Account> accounts = repository.findAll();
for (Account account : accounts) {
System.out.println(account);
}
}
showListメソッドは、CrudRepository
を継承した上で有効なfindAllメソッドを呼び出し、すべてのエンティティの値をIterable形式に変換して格納する.それらをfor文の形式に出力する方法.
実行するために、
AccountApplicaion
のexecuteメソッドの値を変更することもできます. /**
* 실행 메소드
*/
private void execute() {
// 등록처리
//setup();
showList();
}
次に、次の値を出力します.データを1つ取得
AccountApplicaion
クラスに以下のメソッドを追加 /**
* 1건 데이터 얻기
*/
private void showOne() {
System.out.println("---1건의 데이터 얻기---");
// Repository를 사용하여 1건의 데이터를 얻고 결과를 얻음
// return값은 Optional
Optional<Account> accountOptional =repository.findById(2);
// 값 존재 확인
if(accountOptional.isPresent()) {
System.out.println(accountOptional.get());
} else {
System.out.println("해당 퀴즈가 없습니다.");
}
System.out.println("---1건 데이터 얻기 완료---");
}
showOneメソッドは、CrudRepository
を継承するfindByIdメソッドを呼び出すことによって、メソッドに与えられた値に対応するエンティティを得ることができる.ここで、IDはマスターキーの2を超えている.
findByIdメソッドの戻り値は
Optional(java.util.Optional)
ですnullの値がある可能性があるので、オプションで値を入力できます.
Optionalメソッド
isPresent()
で値が含まれているかどうかをチェックし、getメソッドでパッケージされた値を取得します.値が存在しない場合は、運転時異常-
NoSuchElementException
を放出します.同様に、
AccountApplicaion
のexecuteメソッドを変更します. /**
* 실행 메소드
*/
private void execute() {
// 등록처리
//setup();
//showList();
showOne();
}
次の値を出力します.更新プロセスの実行
AccountApplicaion
クラスに以下のメソッドを追加 /**
* 업데이트 처리
*/
private void updateAccount() {
System.out.println("--- 업데이트 처리 시작 ---");
// 변경 엔티티 설정
Account account1 = new Account(1, "abab","가가가", "[email protected]", "1212");
// 업데이트 실행
account1 = repository.save(account1);
// 업데이트 확인
System.out.println("업데이트 된 데이터: " + account1);
System.out.println("--- 업데이트 처리 완료 ---");
}
}
updateAccountメソッドは、CrudRepository
継承後に使用可能なsaveメソッドを呼び出し、指定したエンティティをデータベースに格納します.前にsaveについて説明しましたが、省略してください.
AccountApplicaion
のexecuteメソッド図を変更 /**
* 실행 메소드
*/
private void execute() {
// 등록처리
//setup();
//showList();
//showOne();
updateAccount();
}
実行結果正常に動作していることを示します.
削除の実行
AccountApplicaion
クラスに以下のメソッドを追加 /**
* 삭제
*/
private void deleteAcoount() {
System.out.println("--- 삭제 처리 실행 ---");
repository.deleteById(2);
System.out.println("--- 삭제 처리 완료 ---");
}
}
継承されたCrudRepository
のdeleteByIdメソッドの使用ID 2のエンティティが削除されます.
AccountApplicaion
クラスexecuteメソッドの変更 /**
* 실행 메소드
*/
private void execute() {
// 등록처리
//setup();
//showList();
//showOne();
//updateAccount();
deleteAcoount();
}
実行結果正常に動作.
Reference
この問題について(Springアプリケーションの最初から最後まで3)-データベース操作), 我々は、より多くの情報をここで見つけました https://velog.io/@juno0713/Spring-애플리케이션-처음부터-끝까지-만들어보기-3-DB-조작テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol