JDBC
Основные разделы
Основные сущности
- Connection
- Statement
- PreparedStatement
- CallableStatement
- ResulSet
Место JDBC в программе
- Application Code
- JDBC API
- JDBC DB Driver
- SQL Commands + Data
- MySQL/PostgreSQL/Oracle/Etc.
Виды Statements
- Statement
- PreparedStatement
- CallableStatement
Statement vs PreparedStatement
- Statement - используется для строковых SQL запросов.
- Из-за объединения строк код сложно-читаемый.
- Уязвим для SQL-инъекций.
- Нет оптимизации запросов.
- Запрос не отобразиться как ранее выполняющийся, и не будет использовать кэш.
- Подходит для DDL-запросов.
- Нельзя использовать для хранения/извлечения файлов и массивов.
- PreparedStatement - используется для параметризованных SQL запросов.
- Есть методы для привязки различных типов, включая файлы и массивы.
- Защищен для SQL-инъекций.
- Кешируется.
- Ускоряет обмен данных базой и JVM через двоичный протокол. Меньше данных - быстрее связь.
- Обеспечивает пакетное выполнение во время одного подключения к базе данных.
- Имеет метод getMetadata. Которые содержат информацию о возвращаемом результате.
Вывод: Statement для DDL. PreparedStatement для DML.
Виды executors
- ExecuteQuery - должен использоваться тогда, когда возможно возвращение нескольких объектов ResultSet.
- ExecuteUpdate используется для выполнения операторов INSERT, UPDATE или DELETE,
а также для операторов DDL (Data Definition Language - язык определения данных), например, CREATE TABLE и
DROP TABLE. Результатом оператора INSERT, UPDATE, или DELETE является модификация одной или
более колонок в нуле или более строках таблицы. Метод executeUpdate возвращает целое число,
показывающее, сколько строк было модифицировано. Для выражений типа CREATE TABLE и DROP TABLE,
которые не оперируют над строками, возвращаемое методом executeUpdate значение всегда равно нулю.
Действия с данными в связанной таблице при удалении
- CASCADE
- SET NULL
- SET DEFAULT
- NO ACTION
Типы ограничений целостности данных
- Внешний ключ
- Первичный ключ
- Проверка
- Уникальность
- По умолчанию