ако извикаме EntityTransaction.commit(), извиква ли автоматичноEntityManager.flush()?
Да
каква е разликата?
Във flush() промените в данните се отразяват в базата данни след среща с flush, но той все още е в транзакция.flush() ТРЯБВА да бъде затворен в контекст на транзакция и не е нужно да го правите изрично, освен ако не е необходимо (в редки случаи ), когато EntityTransaction.commit() направи това вместо вас.
Източник