code: @Override
      protected void onPersist(EntityMetadata entityMetadata, Object entity, Object id, List<RelationHolder> rlHolders)
      {
          Connection conn = getConnection();
          try
          {
              // if entity is embeddable...call cql translator to get cql string!
              // use thrift client to execute cql query.
  
              if (isCql3Enabled(entityMetadata))
              {
                  cqlClient.persist(entityMetadata, entity, conn.getClient(), rlHolders,
                          getTtlValues().get(entityMetadata.getTableName()));
              }
              else
              {
                  Map<ByteBuffer, Map<String, List<Mutation>>> mutationMap = new HashMap<ByteBuffer, Map<String, List<Mutation>>>();
                  prepareMutation(entityMetadata, entity, id, rlHolders, mutationMap);
                  // Write Mutation map to database
                  conn.getClient().batch_mutate(mutationMap, getConsistencyLevel());
  
                  mutationMap.clear();
                  mutationMap = null;
              }
  
          }
          catch (InvalidRequestException e)
          {
              log.error("Error while persisting record, Caused by: .", e);
              throw new KunderaException(e);
          }
          catch (TException e)
          {
              log.error("Error while persisting record, Caused by: .", e);
              throw new KunderaException(e);
          }
          catch (UnsupportedEncodingException e)
          {
              log.error("Error while persisting record, Caused by: .", e);
              throw new KunderaException(e);
          }
          finally
          {
              releaseConnection(conn);
  
              if (isTtlPerRequest())
              {
                  getTtlValues().clear();
              }
          }
      }
docs: Persists a {@link Node} to database.
  
  @param entityMetadata
  the entity metadata
  @param entity
  the entity
  @param id
  the id
  @param rlHolders
  the rl holders