I am using neo4j java client. When a write query is successful, I know it is possible to know how many nodes have been created, updated or deleted, and same for relationships via SummaryCounters. However, is there a way to know exactly which nodes and relationships have been created/updated/deleted ?
You could use a serverside TransactionEventHandler. In it's afterCommit method you get a callback with exactly that information.
APOC Triggers (Neo4j APOC Procedures User Guide) leverage exactly that functionality.