Spring DBアクセス技術-純JDBC、多形性賛!


データベースをどのように処理したかについて説明します.

純JDBC


優先パラメータ

  • build.jdbc、h 2データベース関連ライブラリをgradeファイルに
  • 追加
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    runtimeOnly 'com.h2database:h2'
    JavaはデータベースにアクセスするにはJDBCドライバが必要です.
    DBに貼りたいなら接続情報などを入れる必要がありますが、最近SpringBootがやっています.パスを挿入するだけでsrc/main/resources/application.properties
    そうすると、DBにアクセスする準備ができています.サーバを再起動すると、Springは接続DBのすべての作業を行います!
    今からJDBC APIで開発開始!!
    でもどこで開発...?
    以前、インプリメンテーションを使用してメモリベースのリポジトリ(MemoryMemberRepository)を作成したことを覚えていますか?
    インターフェイスもやったし、今やっと新しいJdbccMemberRepository実装体に変えることができました!!repository/JdbcMemberRepository
    public class JdbcMemberRepository implements MemberRepository{
        @Override
        public Member save(Member member) {
            return null;
        }
    
        @Override
        public Optional<Member> findById(Long id) {
            return Optional.empty();
        }
    
        @Override
        public Optional<Member> findByName(String name) {
            return Optional.empty();
        }
    
        @Override
        public List<Member> findAll() {
            return null;
        }
    }
    ひとつずつ実現すればいいんですよね~

    Jdbcリポジトリ実装


    このようにJDBC APIで直接コードするのは20年前のことですだから、古代の開発者がこんなに苦労して生活していたのだろう.精神健康のために、参考にしただけだ.
    まず、データベースにはDataSourceが必要です.repository/JdbcMemberRepository
    public classs JdbcMemberRepository implements MemberRepository {
    	private final DataSource dataSource;
        // dataSource 를 스프링으로부터 주입받아야 한다.
        public JdbcMemberRepository(DataSource dataSource){
            this.dataSource = dataSource;
            // dataSource.getConnection();
        }
        ... 이하의 코드는 고대의 코드라 여기서는 생략했다.
        모든 코드를 보려면, github 으로!
    }
    DataSourceは、データベース接続を取得する際に使用するオブジェクトです.Spring Bootは、データベース接続情報に基づいてデータソースを作成し、Spring VINに設定します.だからDIを受け入れることができます
    コンフィギュレーションファイルにjdbc関連設定とh 2データベース設定が設定されているため、スプリングがイジェクトを開始するとdataSourceという接続情報が作成されるため、オブジェクトを注入できます.
    dataSource.getConnection(); 接続先

    スプリング設定の変更

    SpringConfig.java
    @Configuration
    public class SpringConfig {
        private DataSource dataSource;
    
        @Autowired
        public SpringConfig(DataSource dataSource){
            this.dataSource = dataSource;
        }
        @Bean
        public MemberService memberService(){
            return new MemberService(memberRepository());
        }
    
        @Bean
        public MemberRepository memberRepository(){
            return new JdbcMemberRepository(dataSource);
        }
    
    }
    return new MemoryMemberRepositor->JdbcMemberRepository、DBのみに変更されたデータベースへの接続に成功しました!これがオブジェクト向けの多形性で、スプリングを使う理由!!

    実施形態としては、MemoryMemberRepositoryおよびJdbcMemberRepositoryがある.

    SOLIDの原則では、
  • 開放式閉鎖法則(OCP、開放式閉鎖原則)
    -展開はオン、修正はオフの
  • スプリングの依存入力(DI)を使用すると、既存のコードをまったく変更せず、設定するだけで実装クラス
  • を変更できます.
  • 会員を登録し、データベースの結果入力が正しいことを確認します.
  • のデータはデータベースに格納されているので、Springサーバを再実行するもデータは
  • を安全に格納することができる.
    多形性賛!