J2EE design decisions part2

how to discern which design patterns and frameworks would work best for your enterprise applications

Encapsulating the business logic

EJB session facade

EJB container provides [transaction management] [security] [distrobuted transactions] [remote access]
EJB session facade can only run in the EJB container

POJO facade

AOP-based mechanism (Spring Framework) provides [transaction management] [persistance framework] [connections] [security]
EJB container is not needed
Dependency injection can be used.

Accessing the database

Developing and maintaining SQL
There is a lack of portability with SQL
Writing JDBC code is time consuming and error-prone

Handling concurrency in database transactions

Optimistic locking
Pessimistic locking

Handling concurrency in long transactions

Optimistic Offline Lock pattern
Pessimistic Offline Lock pattern