1. Everything that is above plain JDBC, where you have to manage the transactions etc. yourself, makes people unaware of stuff. I cannot count the amount of times people just slapped the @Transactional annotation on something (Spring) without REALLY understanding what is happening.
2. A couple years ago I had to write a core banking system for a financial institution from scratch. It wasn't supposed to be batch based, instead real-time, multi-threaded,multi-user. Hence the need to know deeply about transactions. At that time, my transaction/connection knowledge was limited and I tried to come up with a ton of exercises (the book really), to learn all that stuff inside out. The funny thing is: It SEEMS like a specific field in the context of Java, but it really is just basics. If more people knew these basics, they wouldn't try to come up with new solutions to long-solved problems over and over and over again. That's at least my 5 cents
Want to become a better Java programmer? Check out www.marcobehler.com