This is a summary of the J2EE persistence strategies that a Sun Certified Enterprise Architect should be familiar with (use scrollbars at bottom to view entire table):
Strategy | Ease of Development | Performance | Scalability | Extensibility | Security | Strategy |
CMP | relatively simple; preferred over BMP | container dependent | EJB container dependent *a | varies by implementation | EJB provided | CMP |
BMP | more involved | very efficient w/control over SQL | EJB container dependent *a | varies by implementation | EJB provided | BMP |
JDO | simple | possibly some performance penalty | developer managed | varies by implementation | developer managed | JDO |
JPA | the simplest | possibly some performance penalty | EJB container dependent *a | varies by implementation | EJB provided | JPA |
ORM/DAOs | simple | possibly some performance penalty | developer managed | varies by implementation | developer managed | ORM/DAOs |
JDBC | most time-consuming and involved | theoretical best performance | developer managed | varies by implementation | developer managed | JDBC |
iBatis/DAO | somewhere between ORM and JDBC | excellent performance | developer managed | varies by implementation | developer managed | iBatis/DAO |
*a = stateless session beans more scalable than stateful
not covered by SCEA exam
Spring can help level the playing field outside EJB in some of the above developer managed areas by helping with transactioning, scalability and security.