Spring's consistent transaction model makes event publish easily consistent with JPA transaction without needing to consider difference in low level.