バックエンド死亡経路TIL 17-19日目
学習目標
講座を聞いて、私の知っている内容をチェックして、
新しい学習内容を整理する.
あなたの疑問を理解し、理解します.
JDBC
JDBCとは?
JDBCは、Javaアプリケーションとリレーショナル・データベースを接続するコネクタです.
JDBC Architecture Model
( https://www.infoworld.com/article/3388036/what-is-jdbc-introduction-to-java-database-connectivity.html )
JDBC Driver Model
Drive Managerは、各データベースに対応するドライバを呼び出し、データベースと通信します.
JDBC Flow
SQL Injection
' OR '1'='1
createStatement()
ではなくprepareStatement()
を使用してSQL Injectionを回避します.Spring JDBC DataSource
DataBase Connection Pool (DBCP)
コネクタの作成と閉じるたびに、多くのリソースが消費されます.
コネクタを事前に作成してプールに保存し、必要に応じてインポート、使用、および戻ります.
このプロセスでは、データ・ソースが接続プールを管理します.
プールからコネクタをインポートする場合も、データソースからインポートされます.
コネクタを次の順序で管理します.
HikariCP
ドライバマネージャの1つであるHikariCPはJDBC接続プールの1つです.
JdbcTemplate
スプリングは、TemplateCallBack Patternを作成することによって、重複部分と変更部分を含むJdbcTemplateを提供します.
DBバインド統合テストコード
統合テストにはデータベースが必要です.
ただし、外部環境の問題でデータベース・サーバに接続できない場合は、テストが必要になる場合があります.
スプリングは、この問題を解決するために埋め込まれたデータベースを提供します.
https://github.com/wix/wix-embedded-mysql
NamedParameterJdbcTemplate
名前ベースのパラメータを設定するJDBC Template.
DataAccessException
JdbcTemplateは、Sql Exceptionを実行時異常のDataAccessExceptionとしてカプセル化します.
これにより、アプリケーション・レベルでSQLExceptionに注目することを回避できます.
SQLExceptionで扱いにくい詳細な異常情報を有意義な異常に変換する.
取引
トランザクションとは?
トランザクションは、DBMSまたは同様のシステムで相互作用する単位です.
例えば、銀行の振り替えシステムを考えてみると、
勘定科目を検索し、勘定科目からお金を引き出し、振り替える勘定科目にお金を預けるプロセス.
しかし、引き出しに成功しても送金に失敗した場合、口座から流出したお金が発生する可能性がありますが、振り替える口座は送金できないという問題があります.
これらの問題を回避するために、論理的にタスクを実行するクエリーを組み合わせ、トランザクションとして管理します.
トランザクションにより、DBMSは各トランザクションにACID保証を提供します.
Reference
この問題について(バックエンド死亡経路TIL 17-19日目), 我々は、より多くの情報をここで見つけました https://velog.io/@justsaturday/백엔드-데브코스-TIL-17-18일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol