Book Image

Persistence Best Practices for Java Applications

By : Otavio Santana, Karina Varela
Book Image

Persistence Best Practices for Java Applications

By: Otavio Santana, Karina Varela

Overview of this book

Having a solid software architecture breathes life into tech solutions. In the early stages of an application’s development, critical decisions need to be made, such as whether to go for microservices, a monolithic architecture, the event-driven approach, or containerization. In Java contexts, frameworks and runtimes also need to be defi ned. But one aspect is often overlooked – the persistence layer – which plays a vital role similar to that of data stores in modern cloud-native solutions. To optimize applications and data stores, a holistic understanding of best practices, technologies, and existing approaches is crucial. This book presents well-established patterns and standards that can be used in Java solutions, with valuable insights into the pros and cons of trending technologies and frameworks used in cloud-native microservices, alongside good Java coding practices. As you progress, you’ll confront the challenges of cloud adoption head-on, particularly those tied to the growing need for cost reduction through stack modernization. Within these pages, you’ll discover application modernization strategies and learn how enterprise data integration patterns and event-driven architectures enable smooth modernization processes with low-to-zero impact on the existing legacy stack.
Table of Contents (18 chapters)
1
Part 1: Persistence in Cloud Computing – Storing and Managing Data in Modern Software Architecture
6
Part 2: Jakarta EE, MicroProfile, Modern Persistence Technologies, and Their Trade-Offs
9
Chapter 7: The Missing Guide for jOOQ Adoption
11
Part 3: Architectural Perspective over Persistence

Preface

A solid software architecture combines every building block required to bring a tech solution to life. In the early days of an application’s life, the design and practices are established: microservice or monolith architecture, event-driven approach, the integration and delivery application life cycle, containerization, and so on. Restricting the application side, especially in a Java context, frameworks and execution runtimes are also defined. Like the good old legacy systems, most modern cloud-native solutions rely on data, generally in data stores (e.g., databases). Unfortunately, the persistence layer is often left aside and not treated with the same importance as these other topics. For scenarios dependent on stateful services, this is the beginning of the end – the brand-new solution is doomed for a life of performance struggles and reduced maintainability, or even worse, might have ingrained weeds causing data inconsistency. The reduced maintainability is a result of the neglect in the persistence layer design and definitions, as schemes and data models are poorly implemented on top of insufficient information. In such scenarios, even trivial database refactorings are brutal and time-consuming.

Having a panoramic understanding of the challenges, solutions, and best practices of the persistence layer, technologies, and existing approaches is the way out of such troublesome scenarios and many more related to applications and data stores.

This book presents well-established patterns and standards that can be used in Java solutions, with valuable pros and cons of the trendy technologies and frameworks used in cloud-native microservices when confronted with good Java coding practices. As Java technologies have been broadly used for over two decades now, cloud adoption puts extra challenges on the table, such as the growing need for cost reduction through stack modernization. So, you will learn about application modernization strategies and gain in-depth knowledge about how enterprise data integration patterns and event-driven architectures enable smooth modernization processes with low-to-zero impact on the existing legacy stack.

After reading this book, your next architectural decision will be solid and backed by a thorough explanation of data storage options and their respective recommended usage scenarios, covering technologies such as SQL, NoSQL, and NewSQL. When talking about data-related content tailored within a Java ecosystem’s context, extensive information is available on topics such as how MicroProfile and Jakarta EE work; database patterns (such as Active Record and Data Access Object (DAO); Command and Query Responsibility Segregation (CQRS); in-memory persistence; and frameworks for object mapping.

If, at this point, you understand the reasons why the careful handling of data storage is crucial for a system and architecture and believe it has a direct impact on the whole organization, to the point of adding such value that businesses strive to beat their competitors by adopting data-centric strategies, then this book is for you. Get ready to join us on this exciting journey of exploring data, its mysteries, and its treasures in a cloud-driven era.