A relational database management system (RDBMS) stores persistent data and exposes an SQL-based interface to applications. Relational data is not tied to Java or to one application: a data-entry application and a reporting application can share it, and the data may outlive either program. The relational model also provides a foundation for protecting data integrity. section 1.1.1
For a Java application, using an SQL database directly means doing low-level work through JDBC: binding query parameters, executing queries, moving through results, and retrieving values. Hand-written SQL must also account for differences between database dialects. Object/relational mapping (ORM), including Hibernate, addresses the desire to save and retrieve class instances without writing all that access code by hand; Spring Data provides another way to access persistence stores. section 1.0 section 1.1.3
Distinguish the relational model from products marketed as relational. An SQL interface alone does not make a system fully relational in the original sense, so shortcomings of SQL should not automatically be attributed to the model. section 1.1.1
Choose a persistence approach against the application's requirements:
- An SQL database is a robust, widely used choice when shared data and integrity matter; it is not specific to a Java application. section 1.1.1
- Do not assume it is universally suitable. Some internet-scale systems can tolerate a period of weak consistency after an update, while specialized scientific datasets may call for custom persistence solutions rather than generic transactional SQL tools. section 1.1.3





