Spring Data Cassandra 中的编解码器和转换器之间的区别?

Difference between codec and converters in Spring Data Cassandra?

CodecConverter 在 Spring Data Cassandra 中的主要区别是什么?

TL;博士;

TypeCodecs 是 DataStax 的 Java Cassandra 驱动程序的一部分。 Converter 是 Spring 特定于转换值 在驱动程序的顶部

TypeCodec

它们习惯于 serialize/deserialize 使用 Cassandra 协议的值:

A Codec that can serialize and deserialize to and from a given CQL type and a given Java Type.

编解码器主要与本地映射到 Java 类型的数据类型一起使用,例如 INTintegerVARCHARString

编解码器也可用于映射 UDT(表示为 UDTValue) to a POJO using DataStax annotation-based Mapping add-on,无需您将 UDT 值复制到代码中的 POJO 属性。

Spring数据

说到 Apache Cassandra 的 Spring 数据,它在 Cassandra 驱动程序之上放置了一个抽象层。 Spring 数据处理对象映射和许多您无法从驱动程序本地获取的内容。 Spring 数据使用转换器将 ResultSet Row 转换为对象。使用约定进行转换,您将获得默认的映射行为,不需要您首先提供额外的转换器。

如果您想自定义 Spring 数据的转换,那么您可以提供一个自定义 Converter 来,例如,将 JSON(存储为字符串)转换为对象或存储Cassandra 中的数据类型自然无法使用 Spring 数据的默认对象映射进行序列化。