The flush statement is, at best, redundant; a flush happens at commit.  In the code we absorbed, persist was being called on the session without an explicit commit following, hence the flush.  With our switch to JTA-CMT, we let the container handle when to commit and flush; our code's only responsibility is to get the session properly.

Hibernate's documentation offers the following: "With CMT, transaction demarcation is completed in session bean deployment descriptors, not programmatically."
- http://docs.jboss.org/hibernate/core/3.3/reference/en/html/transactions.html#transactions-demarcation-jta