(~7 years too late, but still)
To contradict the accepted answer, I highly doubt JAXB is implemented on top of DOM - that would require two Object Models (Java and DOM) and would entirely defeat the point of XML binding (the XB in JAXB) worse for performance/space it would require both models to back each other.
Seems to me JAXB is a clear analog of DOM when considering approaches to handling XML bi-directional mapping in Java. DOM and JAXB are just cases of what IBM calls XOM.
In almost all cases I'd favour JAXB over DOM, and favour handrolled over SAX - primarily because I find the SAX and DOM API's "language agnostic" bent utterly grotesque.
Obviously if your dataset is too big to fit into memory then an Object Model isn't viable. Otherwise
How to choose:
- Have a Java model, or are loading one from XML? it's serialization, just use JAXB
- No Java model, time/space paramount, simple single pass attribute/element querying, schema unknown? Use SAX
- No Java model and time/space paramount but schema is known, unchanging and simple? Roll your own, seriously it's trivial (however do use an XSD and JAXB and codegen to test your implementation)
- Is XML schema unknown a priori, subject to change without notification, or permits arbitrary unknown (namespaced) extensions? Use DOM
- Is XML schema locked or you own it? Use JAXB