Skip to content

Commit

Permalink
Merge pull request #21651 from loicmathieu/hibernate-panache-quickstart
Browse files Browse the repository at this point in the history
Hibernate panache codestart
  • Loading branch information
yrodiere authored Jan 2, 2023
2 parents 08013ca + 613a05a commit dfc0b63
Show file tree
Hide file tree
Showing 12 changed files with 271 additions and 67 deletions.
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
{#include readme-header /}
{#include readme-header /}

{#if input.selected-extensions-ga.contains('io.quarkus:quarkus-hibernate-orm-panache')}
[Related Hibernate with Panache section...](https://quarkus.io/guides/hibernate-orm-panache)
{/if}

{#if input.selected-extensions-ga.contains('io.quarkus:quarkus-hibernate-orm-panache-kotlin')}
[Related Hibernate with Panache in Kotlin section...](https://quarkus.io/guides/hibernate-orm-panache-kotlin)
{/if}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package org.acme;

{#if !input.selected-extensions-ga.contains('io.quarkus:quarkus-hibernate-orm-panache')}
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

/**
* Example JPA entity.
*
* To use it, get access to a JPA EntityManager via injection.
*
* \{@code
* @Inject
* EntityManager em;
*
* public void doSomething() {
* MyEntity entity1 = new MyEntity();
* entity1.field = "field-1";
* em.persist(entity1);
*
* List<MyEntity> entities = em.createQuery("from MyEntity", MyEntity.class).getResultList();
* }
* }
*/
@Entity
public class MyEntity {
@Id
@GeneratedValue
public Long id;

public String field;
}
{/if}
{#if input.selected-extensions-ga.contains('io.quarkus:quarkus-hibernate-orm-panache')}
import io.quarkus.hibernate.orm.panache.PanacheEntity;
import javax.persistence.Entity;


/**
* Example JPA entity defined as a Panache Entity.
* An ID field of Long type is provided, if you want to define your own ID field extends <code>PanacheEntityBase</code> instead.
*
* This uses the active record pattern, you can also use the repository pattern instead:
* {@see https://quarkus.io/guides/hibernate-orm-panache#solution-2-using-the-repository-pattern}.
*
* Usage (more example on the documentation)
*
* \{@code
* public void doSomething() {
* MyEntity entity1 = new MyEntity();
* entity1.field = "field-1";
* entity1.persist();
*
* List<MyEntity> entities = MyEntity.listAll();
* }
* }
*/
@Entity
public class MyEntity extends PanacheEntity {
public String field;
}
{/if}
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package org.acme

{#if !input.selected-extensions-ga.contains('io.quarkus:quarkus-hibernate-orm-panache-kotlin')}
import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.Id

/**
* Example JPA entity.
*
* To use it, get access to a JPA EntityManager via injection.
*
* \{@code
* @Inject
* lateinit var em:EntityManager;
*
* fun doSomething() {
* val entity1 = MyKotlinEntity();
* entity1.field = "field-1"
* em.persist(entity1);
*
* val entities:List<MyKotlinEntity> = em.createQuery("from MyEntity", MyKotlinEntity::class.java).getResultList()
* }
* }
*/
@Entity
class MyKotlinEntity {
@get:GeneratedValue
@get:Id
var id: Long? = null
var field: String? = null
}
{/if}
{#if input.selected-extensions-ga.contains('io.quarkus:quarkus-hibernate-orm-panache-kotlin')}
import io.quarkus.hibernate.orm.panache.kotlin.PanacheEntity
import io.quarkus.hibernate.orm.panache.kotlin.PanacheCompanion
import javax.persistence.Entity

/**
* Example JPA entity defined as a Kotlin Panache Entity.
* An ID field of Long type is provided, if you want to define your own ID field extends <code>PanacheEntityBase</code> instead.
*
* This uses the active record pattern, you can also use the repository pattern instead:
* {@see https://quarkus.io/guides/hibernate-orm-panache-kotlin#defining-your-repository}.
*
* Usage (more example on the documentation)
*
* \{@code
*
* fun doSomething() {
* val entity1 = MyKotlinEntity();
* entity1.field = "field-1"
* entity1.persist()
*
* val entities:List<MyKotlinEntity> = MyKotlinEntity.listAll()
* }
* }
*/
@Entity
class MyKotlinEntity: PanacheEntity() {
companion object: PanacheCompanion<MyKotlinEntity> {
fun byName(name: String) = list("name", name)
}

lateinit var field: String
}
{/if}
2 changes: 1 addition & 1 deletion docs/src/main/asciidoc/hibernate-orm-panache-kotlin.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ change or two. To Panache-enable your entity, you would define it something lik
[source,kotlin]
----
@Entity
class Person: PanacheEntity {
class Person: PanacheEntity() {
lateinit var name: String
lateinit var birth: LocalDate
lateinit var status: Status
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,7 @@ metadata:
config:
- "quarkus.datasource."
- "quarkus.hibernate-orm."
codestart:
name: "hibernate-orm"
languages: [ "kotlin" ]
artifact: "io.quarkus:quarkus-project-core-extension-codestarts"
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,7 @@ metadata:
config:
- "quarkus.datasource."
- "quarkus.hibernate-orm."
codestart:
name: "hibernate-orm"
languages: ["java"]
artifact: "io.quarkus:quarkus-project-core-extension-codestarts"
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package io.quarkus.devtools.codestarts.quarkus;

import static io.quarkus.devtools.codestarts.quarkus.QuarkusCodestartCatalog.Language.JAVA;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.devtools.testing.codestarts.QuarkusCodestartTest;
import io.quarkus.maven.ArtifactKey;

public class HibernateOrmPanacheCodestartTest {

@RegisterExtension
public static QuarkusCodestartTest codestartTest = QuarkusCodestartTest.builder()
.codestarts("hibernate-orm")
.extension(new ArtifactKey("io.quarkus", "quarkus-jdbc-h2"))
.extension(new ArtifactKey("io.quarkus", "quarkus-hibernate-orm-panache"))
.languages(JAVA)
.build();

@Test
void testContent() throws Throwable {
codestartTest.checkGeneratedSource("org.acme.MyEntity");
}

@Test
void buildAllProjectsForLocalUse() throws Throwable {
codestartTest.buildAllProjects();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package io.quarkus.devtools.codestarts.quarkus;

import static io.quarkus.devtools.codestarts.quarkus.QuarkusCodestartCatalog.Language.KOTLIN;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.devtools.testing.codestarts.QuarkusCodestartTest;
import io.quarkus.maven.ArtifactKey;

public class HibernateOrmPanacheKotlinCodestartTest {

@RegisterExtension
public static QuarkusCodestartTest codestartTest = QuarkusCodestartTest.builder()
.codestarts("hibernate-orm")
.extension(new ArtifactKey("io.quarkus", "quarkus-jdbc-h2"))
.extension(new ArtifactKey("io.quarkus", "quarkus-hibernate-orm-panache-kotlin"))
.languages(KOTLIN)
.build();

@Test
void testContent() throws Throwable {
codestartTest.checkGeneratedSource("org.acme.MyKotlinEntity");
}

@Test
void buildAllProjectsForLocalUse() throws Throwable {
codestartTest.buildAllProjects();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*
* public void doSomething() {
* MyEntity entity1 = new MyEntity();
* entity1.setField("field-1");
* entity1.field = "field-1";
* em.persist(entity1);
*
* List<MyEntity> entities = em.createQuery("from MyEntity", MyEntity.class).getResultList();
Expand All @@ -24,24 +24,9 @@
*/
@Entity
public class MyEntity {
private Long id;
private String field;

@Id
@GeneratedValue
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getField() {
return field;
}
public Long id;

public void setField(String field) {
this.field = field;
}
public String field;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package ilove.quark.us;

import io.quarkus.hibernate.orm.panache.PanacheEntity;
import javax.persistence.Entity;


/**
* Example JPA entity defined as a Panache Entity.
* An ID field of Long type is provided, if you want to define your own ID field extends <code>PanacheEntityBase</code> instead.
*
* This uses the active record pattern, you can also use the repository pattern instead:
* .
*
* Usage (more example on the documentation)
*
* {@code
* public void doSomething() {
* MyEntity entity1 = new MyEntity();
* entity1.field = "field-1";
* entity1.persist();
*
* List<MyEntity> entities = MyEntity.listAll();
* }
* }
*/
@Entity
public class MyEntity extends PanacheEntity {
public String field;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package ilove.quark.us

import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.Id

/**
* Example JPA entity.
*
* To use it, get access to a JPA EntityManager via injection.
*
* ```kotlin
* @Inject
* lateinit var em:EntityManager;
*
* fun doSomething() {
* val entity1 = MyKotlinEntity();
* entity1.field = "field-1"
* em.persist(entity1);
*
* val entities:List<MyKotlinEntity> = em.createQuery("from MyEntity", MyKotlinEntity::class.java).getResultList()
* }
* ```
*/
@Entity
class MyKotlinEntity {
@get:GeneratedValue
@get:Id
var id: Long? = null
var field: String? = null
}

0 comments on commit dfc0b63

Please sign in to comment.