Understanding JCR in AEM

ChatGPT generated image lego ad

If you’re brand new to Adobe Experience Manager (AEM), one of the first things you’ll hear about is something called the JCR—short for Java Content Repository. That might sound intimidating, especially if you don’t have a Java background (I didn’t either), but don’t worry. This post is here to give you a simple, high-level mental model.

And the model we’re going to use? Lego.


What Is the JCR?

Let’s say you walk into a giant Lego store—not just any Lego store, but one where every single brick is cataloged, labeled, and stored in a way that you can find it instantly. That’s the JCR.

In technical terms, the JCR is a hierarchical content repository. But practically speaking, it’s where all of your site’s content and configuration lives inside AEM.

That includes:

Think of the JCR as the giant, well-organized Lego warehouse behind your AEM project.


The JCR Is a Tree, Not a Database Table

Most of us coming from modern web development are used to databases with rows and columns, or APIs that return JSON. JCR doesn’t work like that. Instead, it works more like a file system—everything is stored as a node in a tree, like folders and files.

So, instead of thinking:

SELECT * FROM pages WHERE id = 123;

You think:

/content/mysite/en/products/shoes

That path points to a node, and that node can contain:

This makes it really easy to visualize and navigate the structure of your site—especially once you start using tools like CRXDE Lite or the AEM Developer Console.


How the Lego Analogy Fits

Let’s break it down brick by brick:

You’re not just stacking bricks—you’re building a structured heiarchy, and the JCR keeps it all organized so AEM can render it.


What Lives Where?

Some common places you’ll run into in the JCR:

These aren’t arbitrary—they follow conventions that make AEM powerful and extensible. As you get deeper into AEM, knowing where to look in the JCR is like knowing which bin to open when you need a 2x4 yellow brick.


Why JCR Matters (Even if You’re Not Writing Java)

Even if you’re never going to write Java or interact with the JCR directly in code, understanding how it’s organized helps you:


You don’t need to memorize every node path in the JCR. You just need to know that everything in AEM lives somewhere in this organized tree of Lego bricks—and that knowing where to look is often the first step toward solving a problem or building something new.