Package io.debezium.connector.jdbc
Class JdbcChangeEventSink
java.lang.Object
io.debezium.connector.jdbc.JdbcChangeEventSink
- All Implemented Interfaces:
ChangeEventSink,AutoCloseable
A
ChangeEventSink for a JDBC relational database.- Author:
- Chris Cranford
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final JdbcSinkConnectorConfigprivate final DatabaseDialectprivate static final org.slf4j.Loggerprivate final org.hibernate.StatelessSessionprivate final org.hibernate.SessionFactoryprivate final TableNamingStrategy -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate TableDescriptoralterTableIfNeeded(TableId tableId, SinkRecordDescriptor record) private intbindFieldValuesToQuery(SinkRecordDescriptor record, org.hibernate.query.NativeQuery<?> query, int index, org.apache.kafka.connect.data.Struct source, List<String> fields) private intbindKeyValuesToQuery(SinkRecordDescriptor record, org.hibernate.query.NativeQuery<?> query, int index) private intbindNonKeyValuesToQuery(SinkRecordDescriptor record, org.hibernate.query.NativeQuery<?> query, int index) private TableDescriptorcheckAndApplyTableChangesIfNeeded(TableId tableId, SinkRecordDescriptor descriptor) voidclose()private TableDescriptorcreateTable(TableId tableId, SinkRecordDescriptor record) voidexecute(org.apache.kafka.connect.sink.SinkRecord record) Executes this sink.private booleanprivate TableDescriptorprivate voidwrite(TableDescriptor table, SinkRecordDescriptor record) private voidwriteDelete(String sql, SinkRecordDescriptor record) private voidwriteInsert(String sql, SinkRecordDescriptor record) private voidwriteUpdate(String sql, SinkRecordDescriptor record) private voidwriteUpsert(String sql, SinkRecordDescriptor record)
-
Field Details
-
LOGGER
private static final org.slf4j.Logger LOGGER -
config
-
sessionFactory
private final org.hibernate.SessionFactory sessionFactory -
dialect
-
session
private final org.hibernate.StatelessSession session -
tableNamingStrategy
-
-
Constructor Details
-
JdbcChangeEventSink
-
-
Method Details
-
execute
public void execute(org.apache.kafka.connect.sink.SinkRecord record) Description copied from interface:ChangeEventSinkExecutes this sink.- Specified by:
executein interfaceChangeEventSink- Parameters:
record- the sink record, nevernull
-
close
- Specified by:
closein interfaceAutoCloseable- Throws:
Exception
-
checkAndApplyTableChangesIfNeeded
private TableDescriptor checkAndApplyTableChangesIfNeeded(TableId tableId, SinkRecordDescriptor descriptor) throws SQLException - Throws:
SQLException
-
hasTable
-
readTable
-
createTable
private TableDescriptor createTable(TableId tableId, SinkRecordDescriptor record) throws SQLException - Throws:
SQLException
-
alterTableIfNeeded
private TableDescriptor alterTableIfNeeded(TableId tableId, SinkRecordDescriptor record) throws SQLException - Throws:
SQLException
-
write
- Throws:
SQLException
-
writeInsert
- Throws:
SQLException
-
writeUpsert
- Throws:
SQLException
-
writeUpdate
- Throws:
SQLException
-
writeDelete
- Throws:
SQLException
-
bindKeyValuesToQuery
private int bindKeyValuesToQuery(SinkRecordDescriptor record, org.hibernate.query.NativeQuery<?> query, int index) -
bindNonKeyValuesToQuery
private int bindNonKeyValuesToQuery(SinkRecordDescriptor record, org.hibernate.query.NativeQuery<?> query, int index) -
bindFieldValuesToQuery
private int bindFieldValuesToQuery(SinkRecordDescriptor record, org.hibernate.query.NativeQuery<?> query, int index, org.apache.kafka.connect.data.Struct source, List<String> fields)
-