Isolation is a black sheep of the ACID family. This, strictly speaking, is not the property of a transaction manager. It is fully controlled by the resource manager, i.e. the database. All database transactions operate at a specific isolation level. The difference in XA transactions (JTA) is how this level is selected.
For the most part, it is not possible to achieve control over the choice of transaction isolation level that you have with regular transactions, although some resource managers may allow the SQL settings of transaction isolation commands as the first statement in the XA transaction branch. Another used model is sometimes custom flags for XAResource.start, an approach chosen, for example, by the oracle. For database engines that do not support any of them, transaction XA has a default isolation level that is configured globally for the database server.
Note that even for "serializable" transactions, JTAs or otherwise, you will still have headaches. Read Peter Bailey's excellent ACIDRain paper, and then find a corner to cry quietly.
http://www.bailis.org/papers/acidrain-sigmod2017.pdf
source share