In this chapter, we will discuss how to address architectural constraints for an enterprise application using Hibernate. Every enterprise application follows an architecture, which specifies the software components, such as data models, process models, user interface, and data persistence; and system components such as web servers, application servers, and database management systems. Here, we will see how Hibernate can, in fact, address some architectural requirements and constraints. The following points will be covered in detail:
Architecture matters
Transaction management:
Local transaction
JTA
Compensating transaction
Concurrency:
Isolation level
Locking
Application lock
Scalability:
Clustering
Database shards
Performance
Legacy application
Cloud strategy:
License
Multi-tenancy