Hibernate
Why Hibernate was selected, what were the other options considered: Hibernate provides us with a general way to support different databases without needing to write database vendor-specific SQL code in our data access layer. This allows us to use the same Data Access Objects with different databases. Hibernate is also a good O/R mapping solution so our developers don't need to deal with that problem. The primary reasons we chose Hibernate were: cost (none), speed, documentation and popularity. Other options we were evaluating included Castor and EJB. Development & production environment (IDE, App Server, DB): Dev environment is: Eclipse, Tomcat, mySQL, Struts (framework). Production environment has many combinations of app server/DB. How was Hibernate introduced (prototype written, full bore, limited, etc..): We wrote a small portion of our new application as a prototype, then built the rest of the application after we were confident that Hibernate would meet our needs. Length of learning curve to fully understand: 1 month. Although we are continually finding new ways of leveraging its capabilities.