Добрый день.
Я занимаюсь IT-образованием.
В данный момент готовлю курс «JDBC for Java Developer» для одной западной MOOC-платформы. Думаю этот детальный план может быть полезен кому-то для подготовки к собеседованию.
По некоторому размышлению выходит, что за 4-5 часов видео (стандартный формат на платформе) максимум полезного, что можно рассказать в 5-10 минутных кусочках, попадает в Первую часть (6 тем: «Intro», «Connect to database», «Query database», «ResultSet», «Optimizations», «Transactions» + 35 вложенных подтем).
Ценное, но не помещающееся, пошло во Вторую часть (3 темы: «ThreadLocal Tx-Manager», «Distributed Transactions», «Query Meta-Information» + 10 вложенных подтем).
Ожидается, что слушатель после курса будет готов приступить к технологиям «следующего уровня» после JDBC — Spring JDBC Template, JavaEE transactions, ORM.
Знаю, что разумное замечание состоит в том, что можно «просто почитать JDBC 4.2 Specification». Да, можно. Этот план и строится как анализ спецификации + предлагаемые целевые варианты использования (Dao Patter, TxManager, Connection pooling, ...).
Первая часть
- Intro
- Install MySQL RDBMS + MySQL Workbench
- RDBMS vs DB, create database
- JDBC architecture: JDBC API + JDBC Driver
- JDBC Driver types, transport types
- Connector/J: JDBC Driver to MySQL
- JDBC / SQL versions, SQL dialects
- Connect to database
- Driver, DriverManager, DataSource
- Connection
- JDBC URL
- Connector/J properties
- Query database
- DDL and DML (TEXT)
- Statement
- Statement.executeUpdate: INSERT, UPDATE, DELETE
- Get auto-generated keys
- Statement.executeQuery: SELECT, ResultSet
- Statement.execute
- SQLException: errorCode and errorState
- DAO Pattern
- Альтернатива DAO: Transaction Script, Active Record, ORM
- ResultSet
- ResultSet: positioning and transition
- ResultSet: type
- ResultSet: concurrency
- ResultSet: holdability
- Optimizations
- PreparedStatement = + precompilation — SQL injection
- Batch update = vectorization
- Connection pooling
- Transactions
- ACID properties
- Transaction boundaries
- Savepoints
- Transaction isolation levels
- MySQL transactions: MyISAM vs InnoDB
- READ UNCOMMITED, Dirty Read “phenomena”
- READ COMMITED, NonRepeatable Read “phenomena”
- REPEATABLE READ, Phantom Read “phenomena”
- SERIALIZABLE
Вторая часть
- Local Tx-Manager: by-hands
- Base realization: ThreadLocal Tx-context
- @Transactional annotation
- AOP realization of @Transactional
- Application server = Tx-context + Auth-context + Thread management
- Distributed Transactions
- 2PC-protocol
- javax.jdbc.xa.* — XA-standart realization of 2PC-client
- Distribured-Tx Manager Architecture
- Query Meta-Information
- Database meta-info
- Table meta-info
- Row meta-info
P.S. Кроме подготовки этого курса для сторонней платформы (готовится переводной вариант на английском, оригинал на русском пока негде выложить) автор с 27 февраля стартует курс из 16 вебинаров «Scala for Java Developers» (3 месяца).
Контакты:
skype: GolovachCourses
email: GolovachCourses@gmail.com
Автор: IvanGolovach