Annotations are undoubtedly the coolest new thing in Java SE 5 and will deeply change the way we write Java code. In the process of designing EJB 3.0, Hibernate Validator and Seam, we've had a chance to really start to stretch the use of annotations to the limit. It's striking just how many kinds of things may be expressed more elegantly and efficiently in declarative mode when you have a facility for mixing declaration and logic into the same source file. We've seen that in practice, whatever initial misgivings people may have about Java annotations, once they actually start using something like EJB 3.0 in a real project, they experience such a productivity increase that they quickly become comfortable with the approach.
Earlier today I saw a transaction question targeted for a completely
different audience pop up as the first headline news item on a well
known java news site.
Besides giving me and my colleagues a good laugh
about bugs and transactions it also touched upon one of the questions
that have given me a couple of free beers in bar bets and been
mind-boggling for students during trainings.
The question relates to the following (simplified) code:
Steve just committed a new interface and extension point to Hibernate Core. We can finally plug-in custom Session context management into Hibernate. For those of you who already know getCurrentSession() in Hibernate 3.0, this new extension enables the same without a JTA environment.
One of the distinctive features of Seam is that a lot more things are treated as components
than what you might be used to from other architectures. In fact, pretty much every object
you write will be treated as a Seam component.