diff --git a/blog/build.gradle.kts b/blog/build.gradle.kts
index 8316632..6a57a3f 100644
--- a/blog/build.gradle.kts
+++ b/blog/build.gradle.kts
@@ -15,8 +15,8 @@
 
 dependencies {
     implementation(enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}"))
-    implementation("io.quarkus:quarkus-resteasy-reactive-jsonb")
-    implementation("io.quarkus:quarkus-resteasy-reactive")
+    implementation("io.quarkus:quarkus-resteasy-jsonb")
+    implementation("io.quarkus:quarkus-resteasy")
     implementation("io.quarkus:quarkus-hibernate-orm-panache")
     implementation("io.quarkus:quarkus-arc")
     implementation("io.quarkus:quarkus-jdbc-postgresql")
diff --git a/blog/gradle.properties b/blog/gradle.properties
index d661789..f4144bf 100644
--- a/blog/gradle.properties
+++ b/blog/gradle.properties
@@ -1,7 +1,7 @@
 quarkusPluginId = io.quarkus
-quarkusPluginVersion = 1.11.3.Final
+quarkusPluginVersion = 1.12.0.Final
 quarkusPlatformGroupId = io.quarkus
 quarkusPlatformArtifactId = quarkus-universe-bom
-quarkusPlatformVersion = 1.11.3.Final
+quarkusPlatformVersion = 1.12.0.Final
 
 hibernateTypesVersion = 2.10.2
diff --git a/blog/pom.xml b/blog/pom.xml
index 0b99b93..4d7be41 100644
--- a/blog/pom.xml
+++ b/blog/pom.xml
@@ -8,14 +8,14 @@
   <properties>
     <compiler-plugin.version>3.8.1</compiler-plugin.version>
     <maven.compiler.parameters>true</maven.compiler.parameters>
-    <maven.compiler.source>11</maven.compiler.source>
-    <maven.compiler.target>11</maven.compiler.target>
+    <maven.compiler.source>15</maven.compiler.source>
+    <maven.compiler.target>15</maven.compiler.target>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-    <quarkus-plugin.version>1.11.3.Final</quarkus-plugin.version>
+    <quarkus-plugin.version>1.12.0.Final</quarkus-plugin.version>
     <quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
     <quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
-    <quarkus.platform.version>1.11.3.Final</quarkus.platform.version>
+    <quarkus.platform.version>1.12.0.Final</quarkus.platform.version>
     <surefire-plugin.version>3.0.0-M5</surefire-plugin.version>
     <hibernate-types.version>2.10.2</hibernate-types.version>
   </properties>
@@ -41,11 +41,11 @@
   <dependencies>
     <dependency>
       <groupId>io.quarkus</groupId>
-      <artifactId>quarkus-resteasy-reactive-jsonb</artifactId>
+      <artifactId>quarkus-resteasy-jsonb</artifactId>
     </dependency>
     <dependency>
       <groupId>io.quarkus</groupId>
-      <artifactId>quarkus-resteasy-reactive</artifactId>
+      <artifactId>quarkus-resteasy</artifactId>
     </dependency>
     <dependency>
       <groupId>io.quarkus</groupId>
@@ -108,6 +108,14 @@
           </systemPropertyVariables>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>15</source>
+          <target>15</target>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 
diff --git a/blog/src/main/java/eu/mulk/demos/ReactiveGreetingResource.java b/blog/src/main/java/eu/mulk/demos/ReactiveGreetingResource.java
deleted file mode 100644
index a8fc395..0000000
--- a/blog/src/main/java/eu/mulk/demos/ReactiveGreetingResource.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package eu.mulk.demos;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-
-@Path("/hello-resteasy-reactive")
-public class ReactiveGreetingResource {
-
-    @GET
-    @Produces(MediaType.TEXT_PLAIN)
-    public String hello() {
-        return "Hello";
-    }
-}
diff --git a/blog/src/main/java/eu/mulk/demos/blog/Author.java b/blog/src/main/java/eu/mulk/demos/blog/Author.java
index d9091be..53c21c4 100644
--- a/blog/src/main/java/eu/mulk/demos/blog/Author.java
+++ b/blog/src/main/java/eu/mulk/demos/blog/Author.java
@@ -7,4 +7,10 @@
 public class Author extends PanacheEntity {
 
   public String name;
+
+  public static Author create(String name) {
+    var a = new Author();
+    a.name = name;
+    return a;
+  }
 }
diff --git a/blog/src/main/java/eu/mulk/demos/blog/Category.java b/blog/src/main/java/eu/mulk/demos/blog/Category.java
index a0c3d81..0959d18 100644
--- a/blog/src/main/java/eu/mulk/demos/blog/Category.java
+++ b/blog/src/main/java/eu/mulk/demos/blog/Category.java
@@ -7,4 +7,10 @@
 public class Category extends PanacheEntity {
 
   public String name;
+
+  public static Category create(String name) {
+    var c = new Category();
+    c.name = name;
+    return c;
+  }
 }
diff --git a/blog/src/main/java/eu/mulk/demos/blog/Comment.java b/blog/src/main/java/eu/mulk/demos/blog/Comment.java
index cfcbf84..251d6d8 100644
--- a/blog/src/main/java/eu/mulk/demos/blog/Comment.java
+++ b/blog/src/main/java/eu/mulk/demos/blog/Comment.java
@@ -2,12 +2,31 @@
 
 import io.quarkus.hibernate.orm.panache.PanacheEntity;
 import java.time.Instant;
+import javax.json.bind.annotation.JsonbTransient;
+import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.ManyToOne;
 
 @Entity
 public class Comment extends PanacheEntity {
 
   public String authorName;
+
   public Instant publicationDate;
+
+  @Column(columnDefinition = "TEXT")
   public String text;
+
+  @JsonbTransient
+  @ManyToOne
+  public Post post;
+
+  public static Comment create(Post post, String authorName, String text) {
+    var c = new Comment();
+    c.authorName = authorName;
+    c.publicationDate = Instant.now();
+    c.text = text;
+    c.post = post;
+    return c;
+  }
 }
diff --git a/blog/src/main/java/eu/mulk/demos/blog/DemoDataLoader.java b/blog/src/main/java/eu/mulk/demos/blog/DemoDataLoader.java
new file mode 100644
index 0000000..3ee745a
--- /dev/null
+++ b/blog/src/main/java/eu/mulk/demos/blog/DemoDataLoader.java
@@ -0,0 +1,64 @@
+package eu.mulk.demos.blog;
+
+import static java.util.stream.Collectors.toList;
+
+import io.quarkus.runtime.StartupEvent;
+import java.util.stream.Stream;
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+import javax.transaction.Transactional;
+
+@ApplicationScoped
+public class DemoDataLoader {
+
+  static final int POST_COUNT = 10;
+  static final int COMMENT_COUNT = 3;
+  static final int CATEGORY_COUNT = 2;
+
+  @Inject
+  EntityManager em;
+
+  @Transactional
+  void onStart(@Observes StartupEvent ev) {
+    if (Author.findAll().stream().findAny().isPresent()) {
+      // Already initialized.
+      return;
+    }
+
+    // Authors
+    var mb = Author.create("Matthias Benkard");
+    em.persist(mb);
+
+    // Posts
+    var posts =
+        nat(POST_COUNT).map(x -> Post.create(mb, "Post #%d".formatted(x))).collect(toList());
+    posts.forEach(em::persist);
+
+    // Comments
+    for (var post : posts) {
+      post.comments =
+          nat(COMMENT_COUNT)
+              .map(x -> Comment.create(post, "Anonymous Coward", "First post")).collect(toList());
+      post.comments.forEach(em::persist);
+    }
+
+    // Categories
+    var categories =
+        nat(CATEGORY_COUNT).map(x -> Category.create("Category #%d".formatted(x)))
+            .collect(toList());
+    categories.forEach(em::persist);
+    for (var post : posts) {
+      post.categories = categories;
+    }
+  }
+
+  private static Stream<Integer> nat(int postCount) {
+    return nat().limit(postCount);
+  }
+
+  private static Stream<Integer> nat() {
+    return Stream.iterate(0, x -> x + 1);
+  }
+}
diff --git a/blog/src/main/java/eu/mulk/demos/blog/Post.java b/blog/src/main/java/eu/mulk/demos/blog/Post.java
index a12ba70..3ae3fa0 100644
--- a/blog/src/main/java/eu/mulk/demos/blog/Post.java
+++ b/blog/src/main/java/eu/mulk/demos/blog/Post.java
@@ -26,6 +26,15 @@
   @ManyToMany(fetch = FetchType.LAZY)
   public List<Category> categories;
 
-  @OneToMany(fetch = FetchType.LAZY)
+  @OneToMany(fetch = FetchType.LAZY, mappedBy = "post")
   public List<Comment> comments;
+
+  public static Post create(Author author, String title) {
+    var p = new Post();
+    p.title = title;
+    p.publicationDate = Instant.now();
+    p.body = "";
+    p.author = author;
+    return p;
+  }
 }
diff --git a/blog/src/main/java/eu/mulk/demos/blog/PostResource.java b/blog/src/main/java/eu/mulk/demos/blog/PostResource.java
new file mode 100644
index 0000000..44410cf
--- /dev/null
+++ b/blog/src/main/java/eu/mulk/demos/blog/PostResource.java
@@ -0,0 +1,43 @@
+package eu.mulk.demos.blog;
+
+import java.util.List;
+import javax.transaction.Transactional;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+@Path("/posts")
+public class PostResource {
+
+  @GET
+  @Produces(MediaType.TEXT_PLAIN)
+  @Transactional
+  public List<Post> getAll() {
+    return Post.findAll().list();
+  }
+
+  @GET
+  @Produces(MediaType.TEXT_PLAIN)
+  @Transactional
+  @Path("/q1")
+  public List<Post> getAllWithComments() {
+    return Post.find("""
+        SELECT p FROM Post p
+          LEFT JOIN FETCH p.comments 
+        """).list();
+  }
+
+  @GET
+  @Produces(MediaType.TEXT_PLAIN)
+  @Transactional
+  @Path("/q2")
+  public List<Post> getAllWithCommentsAndCategories() {
+    return Post.find("""
+        SELECT p FROM Post p
+          LEFT JOIN FETCH p.comments
+          LEFT JOIN FETCH p.categories
+        """).list();
+  }
+
+}
diff --git a/blog/src/main/resources/application.properties b/blog/src/main/resources/application.properties
index 9ba7752..fbf150e 100644
--- a/blog/src/main/resources/application.properties
+++ b/blog/src/main/resources/application.properties
@@ -4,6 +4,7 @@
 %dev.quarkus.datasource.jdbc.url = jdbc:postgresql://localhost:5432/demo_blog
 %dev.quarkus.datasource.username = demo
 %dev.quarkus.datasource.password =
+
 %dev.quarkus.hibernate-orm.log.sql = true
 %dev.quarkus.hibernate-orm.log.format-sql = true
 %dev.quarkus.hibernate-orm.database.generation = drop-and-create
