JDO or EJB? JDBC? BMP or CMP? EJB BMP with JDBC and JDO on a RDMS?
Have you ever been caught up in the alphabet soup of Java database programming APIs? Have you ever questioned which approach might be best suited for your particular application? Sure you pride yourself on your skills in crafting some pretty mean EJBs, but is that the best path to head down with your latest project? O'Reilly's new book "Java Database Best Practices" attempts to answer these questions and more.
For such a relatively thin book (267pp), it touches on a wealth of topics vital to the subject at hand. Reese lends his insights concerning database architectures, database design, transaction management, and persistence methods using JDBC, EJB, and JDO. While this isn't intended to be an introductory tome, you are also not expected to be proficient with all these APIs. As such, the latter third of the book contains tutorials on relevant J2EE APIs, JDBC, JDO, and SQL.
Reese does not exhaustively go into detail on every topic, each of which could probably warrant its own book. Rather he arms us with just enough information to make informed decisions about which method might best serve our applications. Aside from merely determining which set of APIs might be best suited in a given situation, Reese also points out several "best practices" to help guide us in design and implementation (for example, "use join tables to model many-to-many relationships").
I do have a couple of small complaints about the book. For one, "best practices" are highlighted throughout the text, but they are not enumerated or indexed in any manner. An enumerated list of these "best practices" would be welcome. Secondly, MVC purists will likely cringe at the JSP examples. While the architecture shown (JSPs as view and control, database access through taglibs) may be valid for small web applications, I don't feel it should be highlighted as a "best practice", particularly for enterprise applications. None of these complaints are major however, and do not overly detract from the value of the book.
"Java Database Best Practices" accomplishes what it sets out to do. This is a book that might be handy to have to pass around your development team in the design phase to get you all on the same page when making some critical choices. This book could also well serve those, such as managers perhaps, seeking a broad survey of Java database programming. I also feel that this book would make an excellent companion text for a college database programming course using Java. While "Java Database Best Practices" won't make you an expert with all of these APIs, it will certainly point you in the right direction.