Auditing Spring Boot Using JPA, Hibernate, and Spring Data JPA

In the ever-evolving landscape of software development, maintaining data integrity, ensuring security, and meeting regulatory compliance requirements are paramount. Auditing, the practice of meticulously tracking and recording changes to data and user actions within an application, emerges as a crucial component in achieving these objectives. In the context of Spring Boot, a versatile framework for building Java-based applications, auditing becomes not just a best practice but a necessity.

In this comprehensive guide, we embark on a journey to explore the intricate world of auditing within Spring Boot applications. Our focus is on harnessing the combined power of three stalwarts in the Java ecosystem: Java Persistence API (JPA), Hibernate, and Spring Data JPA. By the end of this article, you will possess the knowledge and tools needed to implement robust auditing solutions tailored to your Spring Boot projects.

NULL in Oracle

Key Points

The special value NULL means no data, a statement of the fact that the value is unknown. By default, columns, and variables of any type can take this value unless they have a NOT NULL constraint. Also, the DBMS automatically adds a NOT NULL constraint to columns included in the table's primary key.

The main feature of NULL is that it is not equal to anything, not even another NULL. You cannot compare any value with it using any operators: =, <, >, like ... Even the expression NULL != NULL will not be true because one cannot uniquely compare one unknown with another. By the way, this expression will not be false either because when calculating the conditions, Oracle is not limited to the TRUE and FALSE states. Due to the presence of an element of uncertainty in the form of NULL, there is one more state — UNKNOWN

Optimizing Database Queries: Exploring the Heuristic and Cost-Based Approaches

I think everyone at least once used the explaincommand or at least heard about it. This command demonstrates the query execution plan, but how exactly the DBMS arrives at it remains a mystery. And how does the DBMS understand that the selected query is optimal? Does it check all possible options?

In this article, I will try to give a little idea of how query optimizers work from a theoretical point of view.

Design Patterns for Microservices: Ambassador, Anti-Corruption Layer, and Backends for Frontends

Microservices architecture has become increasingly popular in recent years due to its ability to enable flexibility, scalability, and rapid deployment of applications. However, designing and implementing microservices can be complex, and it requires careful planning and architecture to ensure the success of the system. This is where design patterns for microservices come in.

Design patterns provide a proven solution to common problems in software architecture. They help to establish best practices and guidelines for designing and implementing microservices, making it easier to create scalable and maintainable systems. In this article, we will focus on three design patterns for microservices: Ambassador, Anti-Corruption Layer, and Backends for Frontends. We will discuss their definitions, implementation, advantages, and disadvantages, as well as their use cases.

How To Create a Stub in 5 Minutes

If you’re developing an application that sends REST requests to the API of another service, mocks and stubs will probably help with your testing. Mock objects are used in unit tests: a call to another service is simulated. A test stub is an HTTP server that completely mimics the behavior of the service with which we plan to interact during the production use of our application. But using this service is not suitable for testing purposes. The scope of stubs is wide: regression testing, load testing, debugging, and more. 

Today, I will be as brief and, to the best of my ability, clearly talk about how to create stubs in a matter of minutes using the WireMock tool.