サービス・オブジェクトの切断、Oracle接続情報の切断


Section 1. サービス・オブジェクトの分離


1.サービスオブジェクトとコントローラ
  • 以下に示すように、コントローラがサービスオブジェクトをメンバー変数とした場合(DIシナリオ)、サービスオブジェクトの機能は変わらず、技術的方法が異なる場合はコードの変更が必要となる
  • 特定のオブジェクトではなくインタフェースを使用して両者の結合を低減する(ばらばら結合)
  • // JDBC 를 JPA로 변경한다면 재컴파일 및 재빌드 필요없이 설정파일만 변경 
    <bean id ="noticeService" class="webprj.service.jdbc.JDBCNoticeService"/> 
    2.サービスインタフェース
  • NoticeServiceインタフェース
    -DB select/insert/update/delete機能抽象メソッド宣言
  • 3.JDBCNotcieServiceオブジェクト
  • Noticeインタフェースを実施するJDBCNotcieServiceオブジェクト
  • 4. Controller
  • 非特定通知サービス対象の通知サービスインタフェースを参照し、メンバー変数でサービス対象をDIとする
  • Section 2. Oracle接続情報の解除


    1. OracleDB Connection
  • url-接続するOracleDBのアドレスとポート番号
  • uid/pwd-アカウントID/PW
  • driver-JavaとOracleの接続を支援するドライバ
  • 2.接続情報の切断が必要
  • javaコード内にoracle接続コードを挿入し、コンパイルによりバイナリコード配布を行い、oracleアカウントパスワードが変更されたりホスト情報が変更されたりした場合、oracle接続情報コードが存在するすべての部分を検索して置き換え、再コンパイルと再配布を行い、トラブルが発生した
  • 接続情報をテキストとしてxml設定ファイルに指示し、DIに必要なオブジェクトに置き換える方式
  • 3.spring jdbcライブラリへの注入
  • releaseバージョン(モジュールバージョンx)
  • 4.DataSourceクラスbeanの指定
  • データ・ソース・クラスの作成と属性(Oracle接続情報)
  • サービス対象のDataSourceDIへの通知
  • 5.JDBCNotcieServiceオブジェクト
  • データソースをメンバー変数とするDI
  • Connection con = dataSource.getConnection(); コードの挿入