Class CassandraPersistenceHandler

  • All Implemented Interfaces:
    org.datanucleus.store.StorePersistenceHandler

    public class CassandraPersistenceHandler
    extends org.datanucleus.store.AbstractPersistenceHandler
    Handler for basic persistence operations with Cassandra datastores.
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface org.datanucleus.store.StorePersistenceHandler

        org.datanucleus.store.StorePersistenceHandler.PersistenceBatchType
    • Constructor Summary

      Constructors 
      Constructor Description
      CassandraPersistenceHandler​(org.datanucleus.store.StoreManager storeMgr)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()  
      void deleteObject​(org.datanucleus.state.ObjectProvider op)  
      void deleteObjects​(org.datanucleus.state.ObjectProvider... ops)  
      void fetchObject​(org.datanucleus.state.ObjectProvider op, int[] fieldNumbers)  
      Object findObject​(org.datanucleus.ExecutionContext ec, Object id)  
      protected void getColumnNamesForEmbeddedMember​(org.datanucleus.store.schema.table.Table table, List<org.datanucleus.metadata.AbstractMemberMetaData> mmds, List<String> colNames, org.datanucleus.ExecutionContext ec)
      Convenience method to populate the "colNames" argument list with column names for the specified embedded field.
      protected String getInsertStatementForClass​(org.datanucleus.metadata.AbstractClassMetaData cmd, org.datanucleus.store.schema.table.Table table, Map<String,​Object> colValuesByName, org.datanucleus.ExecutionContext ec)
      Method to create the INSERT statement for an object of the specified class.
      protected Object[] getPkValuesForStatement​(org.datanucleus.state.ObjectProvider op, org.datanucleus.store.schema.table.Table table, org.datanucleus.ClassLoaderResolver clr)
      Convenience method to extract the pk values to input into an LOCATE/UPDATE/DELETE/FETCH statement
      protected List<org.datanucleus.store.schema.table.Column> getPrimaryKeyColumns​(org.datanucleus.metadata.AbstractClassMetaData cmd, org.datanucleus.store.schema.table.Table table, org.datanucleus.ClassLoaderResolver clr)  
      protected String getVersionStatement​(org.datanucleus.metadata.AbstractClassMetaData cmd, org.datanucleus.store.schema.table.Table table, org.datanucleus.ClassLoaderResolver clr)  
      void insertObject​(org.datanucleus.state.ObjectProvider op)  
      void insertObjects​(org.datanucleus.state.ObjectProvider... ops)  
      void locateObject​(org.datanucleus.state.ObjectProvider op)  
      void locateObjects​(org.datanucleus.state.ObjectProvider[] ops)  
      protected void performOptimisticCheck​(org.datanucleus.state.ObjectProvider op, com.datastax.oss.driver.api.core.CqlSession session, org.datanucleus.store.schema.table.Table table, org.datanucleus.metadata.VersionMetaData vermd, Object currentVersion)  
      void updateObject​(org.datanucleus.state.ObjectProvider op, int[] fieldNumbers)  
      • Methods inherited from class org.datanucleus.store.AbstractPersistenceHandler

        assertReadOnlyForUpdateOfObject, findObjectForUnique
      • Methods inherited from interface org.datanucleus.store.StorePersistenceHandler

        batchEnd, batchStart, fetchObjects, findObjects
    • Field Detail

      • insertStatementByClassName

        protected Map<String,​String> insertStatementByClassName
      • deleteStatementByClassName

        protected Map<String,​String> deleteStatementByClassName
      • locateStatementByClassName

        protected Map<String,​String> locateStatementByClassName
      • getVersionStatementByClassName

        protected Map<String,​String> getVersionStatementByClassName
    • Constructor Detail

      • CassandraPersistenceHandler

        public CassandraPersistenceHandler​(org.datanucleus.store.StoreManager storeMgr)
    • Method Detail

      • close

        public void close()
      • insertObject

        public void insertObject​(org.datanucleus.state.ObjectProvider op)
      • getInsertStatementForClass

        protected String getInsertStatementForClass​(org.datanucleus.metadata.AbstractClassMetaData cmd,
                                                    org.datanucleus.store.schema.table.Table table,
                                                    Map<String,​Object> colValuesByName,
                                                    org.datanucleus.ExecutionContext ec)
        Method to create the INSERT statement for an object of the specified class. Will add all columns for the class and all superclasses, plus any surrogate datastore-id, version, discriminator. Will have the form
         INSERT INTO {schema}.{table} (COL1,COL2,...) VALUES(?,?,...)
         
        All columns are included and if the field is null then at insert CQL will delete the associated cell for the null column.
        Parameters:
        cmd - Metadata for the class
        table - Table used for persistence
        colValuesByName - Map of column values keyed by the column name
        ec - ExecutionContext
        Returns:
        The INSERT statement
      • insertObjects

        public void insertObjects​(org.datanucleus.state.ObjectProvider... ops)
      • updateObject

        public void updateObject​(org.datanucleus.state.ObjectProvider op,
                                 int[] fieldNumbers)
      • deleteObject

        public void deleteObject​(org.datanucleus.state.ObjectProvider op)
      • deleteObjects

        public void deleteObjects​(org.datanucleus.state.ObjectProvider... ops)
      • fetchObject

        public void fetchObject​(org.datanucleus.state.ObjectProvider op,
                                int[] fieldNumbers)
      • getColumnNamesForEmbeddedMember

        protected void getColumnNamesForEmbeddedMember​(org.datanucleus.store.schema.table.Table table,
                                                       List<org.datanucleus.metadata.AbstractMemberMetaData> mmds,
                                                       List<String> colNames,
                                                       org.datanucleus.ExecutionContext ec)
        Convenience method to populate the "colNames" argument list with column names for the specified embedded field.
        Parameters:
        table - Table that we are using
        mmds - Metadata defining the embedded field (possibly nested, maybe multiple levels).
        colNames - List that will have column names added to it
        ec - ExecutionContext
      • locateObject

        public void locateObject​(org.datanucleus.state.ObjectProvider op)
      • locateObjects

        public void locateObjects​(org.datanucleus.state.ObjectProvider[] ops)
      • findObject

        public Object findObject​(org.datanucleus.ExecutionContext ec,
                                 Object id)
      • getVersionStatement

        protected String getVersionStatement​(org.datanucleus.metadata.AbstractClassMetaData cmd,
                                             org.datanucleus.store.schema.table.Table table,
                                             org.datanucleus.ClassLoaderResolver clr)
      • getPkValuesForStatement

        protected Object[] getPkValuesForStatement​(org.datanucleus.state.ObjectProvider op,
                                                   org.datanucleus.store.schema.table.Table table,
                                                   org.datanucleus.ClassLoaderResolver clr)
        Convenience method to extract the pk values to input into an LOCATE/UPDATE/DELETE/FETCH statement
        Parameters:
        op - ObjectProvider we are interested in
        table - The table
        clr - ClassLoader resolver
        Returns:
        The pk values
      • getPrimaryKeyColumns

        protected List<org.datanucleus.store.schema.table.Column> getPrimaryKeyColumns​(org.datanucleus.metadata.AbstractClassMetaData cmd,
                                                                                       org.datanucleus.store.schema.table.Table table,
                                                                                       org.datanucleus.ClassLoaderResolver clr)
      • performOptimisticCheck

        protected void performOptimisticCheck​(org.datanucleus.state.ObjectProvider op,
                                              com.datastax.oss.driver.api.core.CqlSession session,
                                              org.datanucleus.store.schema.table.Table table,
                                              org.datanucleus.metadata.VersionMetaData vermd,
                                              Object currentVersion)