<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Otavio Santana on foojay.io - Friends Of OpenJDK</title><link>https://foojay.io/today/author/otavio-santana/</link><description>Articles written by Otavio Santana on foojay.io - Friends Of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 10 Aug 2026 10:08:50 +0000</lastBuildDate><atom:link href="https://foojay.io/today/author/otavio-santana/index.xml" rel="self" type="application/rss+xml"/><item><title>Introduction to Retrieval-Augmented Generation with Java and MongoDB</title><link>https://foojay.io/today/introduction-to-retrieval-augmented-generation-with-java-and-mongodb/</link><pubDate>Mon, 10 Aug 2026 10:08:50 +0000</pubDate><guid>https://foojay.io/today/introduction-to-retrieval-augmented-generation-with-java-and-mongodb/</guid><description>&lt;p&gt;Modern organizations store large volumes of information in documents, databases, internal platforms, support systems, policies, and operational tools. However, having data does not guarantee that employees or applications can access the right information when needed. As data grows, traditional search tools often fail to identify context, meaning, and relationships between distributed sources. This results in a growing gap between the information an organization holds and its ability to use that information for effective decisions and actions.&lt;/p&gt;</description></item><item><title>Building AI Systems with MongoDB: Implementing the Planning Pattern</title><link>https://foojay.io/today/building-ai-systems-with-mongodb-implementing-the-planning-pattern/</link><pubDate>Thu, 02 Jul 2026 10:00:00 +0000</pubDate><guid>https://foojay.io/today/building-ai-systems-with-mongodb-implementing-the-planning-pattern/</guid><description>&lt;p&gt;Artificial Intelligence has swiftly evolved from a niche research topic to a technology that impacts nearly every aspect of the software industry. Developers now use AI to generate code, review pull requests, create documentation, and accelerate workflows through methods like vibe coding and specification-driven development. While these applications position AI as an engineering tool, a new trend is emerging: integrating AI directly into business workflows within applications.&lt;/p&gt;&#10;&lt;p&gt;This shift offers new challenges for software architects and engineers. Traditional applications rely on deterministic flows, where execution paths are explicitly defined by methods, conditions, loops, and business rules. In contrast, machine learning systems can make decisions during execution, select actions, and adjust dynamically based on context and available information. Architects must therefore design systems that balance the predictability of conventional software with the flexibility of AI-powered reasoning. The Planning Pattern is an effective approach for uniting these domains. Instead of having an LLM address a complex objective in a single step, this pattern breaks the goal into smaller, feasible tasks that interact with deterministic code, external services, and data sources. This creates a more reliable and observable path toward autonomous AI applications.&lt;/p&gt;</description></item><item><title>Introduction to CQRS using MongoDB</title><link>https://foojay.io/today/introduction-to-cqrs-using-mongodb/</link><pubDate>Tue, 09 Jun 2026 10:00:00 +0000</pubDate><guid>https://foojay.io/today/introduction-to-cqrs-using-mongodb/</guid><description>&lt;p&gt;In enterprise environments, projects often begin with a simple structure: one model, one service, and one document, using a single class and data transfer object for both read and write operations. While this unified approach works at first, it becomes problematic as requirements grow. Operations become more complex, requiring additional validations, rules, and constraints. Over time, read operations may demand different formats, such as aggregations, summaries, or custom views. Relying on a single model for both reading and writing leads to maintenance challenges and inefficient queries. This approach can result in returning unnecessary data or omitting required information, violating the single responsibility principle and making the design less effective.&lt;/p&gt;</description></item><item><title>Introduction to Behavior Driving Development with Java and MongoDB</title><link>https://foojay.io/today/introduction-to-behavior-driving-development-with-java-and-mongodb/</link><pubDate>Tue, 27 Jan 2026 16:35:53 +0000</pubDate><guid>https://foojay.io/today/introduction-to-behavior-driving-development-with-java-and-mongodb/</guid><description>&lt;p&gt;When we face software development, the biggest mistake is about delivering what the client wants. It sounds like a cliché, but after decades, we are still facing this problem. One good way to solve it is to start the test focusing on what the business needs.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Behavior-driven development&lt;/strong&gt; (BDD) is a software development methodology where the focus is on behavior and the domain terminology or ubiquitous language. It utilizes a shared, natural language to define and test software behaviors from the user&amp;rsquo;s perspective. BDD builds upon test-driven development (TDD) by focusing on scenarios that are relevant to the business. These scenarios are written as plain-language specifications that can be automated as tests, simultaneously serving as living documentation.&lt;/p&gt;</description></item><item><title>Introduction to Data-Driven Testing with Java and MongoDB</title><link>https://foojay.io/today/introduction-to-data-driven-testing-with-java-and-mongodb/</link><pubDate>Thu, 25 Sep 2025 13:53:57 +0000</pubDate><guid>https://foojay.io/today/introduction-to-data-driven-testing-with-java-and-mongodb/</guid><description>&lt;p&gt;As applications expand, the complexity of the rules they enforce also increases. In many systems, these rules are embedded within the data, primarily in database queries that filter, join, or compute based on real-world conditions. However, the tests for these queries are often shallow, repetitive, or, worse yet, completely absent. When there is an error in the database logic, the application may still compile successfully, but the business can suffer significant consequences.&lt;/p&gt;</description></item><item><title>Java Virtual Threads in Action: Optimizing MongoDB Operation</title><link>https://foojay.io/today/java-virtual-threads-in-action-optimizing-mongodb-operation/</link><pubDate>Tue, 01 Jul 2025 08:12:24 +0000</pubDate><guid>https://foojay.io/today/java-virtual-threads-in-action-optimizing-mongodb-operation/</guid><description>&lt;p&gt;Virtual threads have become one of the most popular resources in Java and are trending inside the language. Indeed, this resource introduced a cheap way to create threads inside the JVM. In this tutorial, we will explain how to use it with MongoDB.&lt;/p&gt;&#10;&lt;p&gt;You can find all the code presented in this tutorial in the &lt;a href="https://github.com/soujava/mongodb-virtual-threads" target="_blank" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;:&lt;/p&gt;&#10;&lt;pre class="EnlighterJSRAW" data-enlighter-language="generic"&gt;git clone git@github.com:soujava/mongodb-virtual-threads.git&lt;/pre&gt;&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;&#10;&lt;p&gt;For this tutorial, you&amp;rsquo;ll need:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Java 21.&lt;/li&gt;&#10;&lt;li&gt;Maven.&lt;/li&gt;&#10;&lt;li&gt;A MongoDB cluster.&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://www.mongodb.com/developer/languages/java/quarkus-eclipse-jnosql/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=java_virtual_threads_mongodb&amp;amp;utm_term=otavio.santana" target="_blank" rel="noopener noreferrer"&gt;MongoDB Atlas&lt;/a&gt; (Option 1)&lt;/li&gt;&#10;&lt;li&gt;Docker (Option 2)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;A &lt;a href="https://www.mongodb.com/developer/languages/java/quarkus-eclipse-jnosql/?utm_campaign=devrel&amp;amp;utm_source=third-party-content&amp;amp;utm_medium=cta&amp;amp;utm_content=java_virtual_threads_mongodb&amp;amp;utm_term=otavio.santana" target="_blank" rel="noopener noreferrer"&gt;Quarkus project&lt;/a&gt; with MongoDB integrated.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;You can use the following Docker command to start a standalone MongoDB instance:&lt;/p&gt;</description></item></channel></rss>