If you want per-application snapshots then you want the application to be in charge of the snapshots - not the file system. The file system does not know when an application is finished making changes to a file. Possibly many files must be changed - the file system does not know so it can not make any assumptions. Applications should be in charge of their own document snapshots using some form of version control. If one wanted they should script it so that a ZFS snapshot was generated - but you are better of using git.
With regards to ZFS, the snapshots are generally done at whatever frequency is defined by the administrator. 5min, 30min, 1day - whatever they decide. The snapshots are accessed from the root ".zfs/snapshots/named_snapshot" directory. There is no piecing together of files - the full file-system, as it was at the point in time it was captured, is available in the directory. The snapshots are immutable - the contents will never change so long as the snapshot exists.