Chapter 18. Testing JPA-based applications
Unfortunately we need to deal with the object relational (O/R) impedance mismatch, and to do so you need to understand two things: the process of mapping objects to relational databases and how to implement those mappings.
Scott W. Amber, Mapping Objects to Relational Databases: O/R Mapping In Detail
This chapter covers
- Multilayered application testing
- Using DbUnit to test JPA applications
- JPA mapping tests
- Testing JPA-based DAOs
- Verifying JPA-generated schema
Most Java applications need to store data in persistent storage, and typically this storage is a relational database. There are many approaches to persisting the data, from executing low-level SQL statements directly to more sophisticated modules that delegate the task to third-party tools.
Although discussing the different approaches is almost a religious matter, we assume it’s a good practice to abstract data persistence to specialized classes, such as DAOs. The DAOs themselves can be implemented in many different ways:
- Writing brute-force SQL statements (such as the UserDaoJdbcImpl example in chapter 17)
- Using third-party tools (like Apache iBATIS or Spring JDBC templates) that facilitate JDBC programming
- Delegating the whole database access to tools that map objects to SQL (and vice-versa)