Serialization
To be able to send data over a network between cluster members and/or clients, you have to serialize it into raw bytes. Hazelcast has many serialization methods to choose from, depending on which Hazelcast topology you are using and what you plan on doing with your data.
Serialization in Client/Server Mode
In client/server topologies, you can serialize your data on the client side. For example, you can serialize data in JSON and add it to a map. This option is useful if you plan on using Hazelcast to store your data in binary. Clients can handle serialization without the members needing to know how to do so.
However, in the following cases, you must configure your serialization method on the member as well:
Case | Clients | Reason | Exceptions |
---|---|---|---|
When the data structure’s values are stored as objects |
All clients |
Members must be able to serialize or deserialize the object in order to send it to other members or receive it from other members |
|
When you want to process map entries or use an executor service |
All clients |
Members need to serialize the tasks |
When using the Java client with |
When you use SQL queries on nested fields whose values are not primitives |
Java only |
Members need to deserialize underlying objects to be able to read nested fields |
You can query nested fields whose values are primitives because these data types are serialized by Hazelcast by default. See Data Types with Built-In Serialization |
Serialization Options for Clients
The following serialization options are available for clients:
-
IdentifiedDataSerializable
-
Portable
-
Compact (BETA)
-
Custom Serialization
For a comparison of these options, see Comparing Serialization Interfaces.
Serialization in Embedded Mode
In embedded mode, because data is partitioned across members in a cluster, each member must be able to serialize and deserialize data in the following cases:
-
Adding key/value objects to a map
-
Putting items in a queue/set/list
-
Sending a runnable using an executor service
-
Processing an entry within a map
-
Locking an object
-
Sending a message to a topic
Serialization Options for Members
For a full list of serialization options, see Comparing Serialization Interfaces.
Data Types with Built-In Serialization
By default, Hazelcast optimizes the serialization for the following data types. You do not need to serialize or deserialize these types yourself:
-
Class
,Optional
,Date
,BigInteger
,BigDecimal
,ArrayList
,LinkedList
,CopyOnWriteArrayList/Set
,HashMap/Set
,ConcurrentSkipListMap/Set
,ConcurrentHashMap
,LinkedHashMap/Set
,TreeMap/Set
,ArrayDeque
,LinkedBlockingQueue
,ArrayBlockingQueue
,PriorityBlockingQueue
,PriorityQueue
,DelayQueue
,SynchronousQueue
,LinkedTransferQueue
If you would rather implement your own serialization for these types, see Overriding the Default Serializers.