Class JoinPersistableRelationStore

  • All Implemented Interfaces:
    org.datanucleus.store.types.scostore.PersistableRelationStore, org.datanucleus.store.types.scostore.Store

    public class JoinPersistableRelationStore
    extends java.lang.Object
    implements org.datanucleus.store.types.scostore.PersistableRelationStore
    RDBMS implementation of a persistable relation backing store. Represents an N-1 unidirectional join table relation, and manages the access to the join table.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.lang.String addStmt
      Statement for adding a relation to the join table.
      protected org.datanucleus.ClassLoaderResolver clr
      ClassLoader resolver.
      protected DatastoreAdapter dba
      Datastore adapter in use by this store.
      protected PersistableJoinTable joinTable
      Table containing the link between owner and related object.
      protected JavaTypeMapping ownerMapping
      Mapping to the owner of the relation (which holds the member).
      protected org.datanucleus.metadata.AbstractMemberMetaData ownerMemberMetaData
      MetaData for the member in the owner.
      protected java.lang.String removeStmt
      Statement for removing a relation from the join table.
      protected RDBMSStoreManager storeMgr
      Manager for the store.
      protected java.lang.String updateStmt
      Statement for updating a relation to the join table.
    • Constructor Summary

      Constructors 
      Constructor Description
      JoinPersistableRelationStore​(org.datanucleus.metadata.AbstractMemberMetaData mmd, PersistableJoinTable joinTable, org.datanucleus.ClassLoaderResolver clr)
      Constructor for a persistable relation join store for RDBMS.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean add​(org.datanucleus.state.DNStateManager sm1, org.datanucleus.state.DNStateManager sm2)  
      protected java.lang.String getAddStmt()
      Generates the statement for adding items.
      org.datanucleus.metadata.AbstractMemberMetaData getOwnerMemberMetaData()  
      protected java.lang.String getRemoveStmt()
      Generates the statement for removing items.
      org.datanucleus.store.StoreManager getStoreManager()  
      protected java.lang.String getUpdateStmt()
      Generates the statement for updating items.
      static int populateOwnerInStatement​(org.datanucleus.state.DNStateManager sm, org.datanucleus.ExecutionContext ec, java.sql.PreparedStatement ps, int jdbcPosition, PersistableJoinTable joinTable)
      Convenience method to populate the passed PreparedStatement with the value from the owner.
      boolean remove​(org.datanucleus.state.DNStateManager sm)  
      boolean update​(org.datanucleus.state.DNStateManager sm1, org.datanucleus.state.DNStateManager sm2)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • ownerMapping

        protected JavaTypeMapping ownerMapping
        Mapping to the owner of the relation (which holds the member).
      • ownerMemberMetaData

        protected org.datanucleus.metadata.AbstractMemberMetaData ownerMemberMetaData
        MetaData for the member in the owner.
      • joinTable

        protected PersistableJoinTable joinTable
        Table containing the link between owner and related object.
      • clr

        protected org.datanucleus.ClassLoaderResolver clr
        ClassLoader resolver.
      • addStmt

        protected java.lang.String addStmt
        Statement for adding a relation to the join table.
      • updateStmt

        protected java.lang.String updateStmt
        Statement for updating a relation to the join table.
      • removeStmt

        protected java.lang.String removeStmt
        Statement for removing a relation from the join table.
    • Constructor Detail

      • JoinPersistableRelationStore

        public JoinPersistableRelationStore​(org.datanucleus.metadata.AbstractMemberMetaData mmd,
                                            PersistableJoinTable joinTable,
                                            org.datanucleus.ClassLoaderResolver clr)
        Constructor for a persistable relation join store for RDBMS.
        Parameters:
        mmd - owner member metadata
        joinTable - The join table
        clr - The ClassLoaderResolver
    • Method Detail

      • getStoreManager

        public org.datanucleus.store.StoreManager getStoreManager()
        Specified by:
        getStoreManager in interface org.datanucleus.store.types.scostore.Store
      • getOwnerMemberMetaData

        public org.datanucleus.metadata.AbstractMemberMetaData getOwnerMemberMetaData()
        Specified by:
        getOwnerMemberMetaData in interface org.datanucleus.store.types.scostore.Store
      • add

        public boolean add​(org.datanucleus.state.DNStateManager sm1,
                           org.datanucleus.state.DNStateManager sm2)
        Specified by:
        add in interface org.datanucleus.store.types.scostore.PersistableRelationStore
      • remove

        public boolean remove​(org.datanucleus.state.DNStateManager sm)
        Specified by:
        remove in interface org.datanucleus.store.types.scostore.PersistableRelationStore
      • update

        public boolean update​(org.datanucleus.state.DNStateManager sm1,
                              org.datanucleus.state.DNStateManager sm2)
        Specified by:
        update in interface org.datanucleus.store.types.scostore.PersistableRelationStore
      • getAddStmt

        protected java.lang.String getAddStmt()
        Generates the statement for adding items.
         INSERT INTO JOINTABLE (OWNER_COL, RELATED_COL) VALUES (?,?)
         
        Returns:
        The Statement for adding an item
      • getUpdateStmt

        protected java.lang.String getUpdateStmt()
        Generates the statement for updating items.
         UPDATE JOINTABLE SET RELATED_COL = ? WHERE OWNER_COL = ?
         
        Returns:
        The Statement for updating an item
      • getRemoveStmt

        protected java.lang.String getRemoveStmt()
        Generates the statement for removing items.
         DELETE FROM JOINTABLE WHERE OWNER_COL = ?
         
        Returns:
        The Statement for removing an item
      • populateOwnerInStatement

        public static int populateOwnerInStatement​(org.datanucleus.state.DNStateManager sm,
                                                   org.datanucleus.ExecutionContext ec,
                                                   java.sql.PreparedStatement ps,
                                                   int jdbcPosition,
                                                   PersistableJoinTable joinTable)
        Convenience method to populate the passed PreparedStatement with the value from the owner.
        Parameters:
        sm - StateManager
        ec - execution context
        ps - The PreparedStatement
        jdbcPosition - Position in JDBC statement to populate
        joinTable - Join table
        Returns:
        The next position in the JDBC statement