I just started working on a Spring-data, Hibernate, MySQL, JPA project. I switched to spring-data so that I wouldn\'t have to worry about creating queries by hand.
I think that the question is a little bit wider and cannot be reduced on the annotations on the data access layer. We need to consider the entire stack of the application, the transaction strategies we want to apply and so on. There is a very comprehensive set of articles on this topic by Mark Richards on IBM developerworks site. You can find the first one here: https://developer.ibm.com/articles/j-ts1/
Best Regards