Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Quarkus Dersleri
  • Spring Dersleri
    • Spring Cloud
    • Spring Boot
    • Spring Uygulama Örnekleri
    • Spring Core
    • Spring JDBC Template
    • Spring MVC
  • İleri Java Dersleri
    • Java Server Faces
    • Java Server Pages
    • PrimeFaces
    • Servlet
    • JDBC
    • JSTL
    • Java 8
  • Hibernate Dersleri
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
  • Hakkımda
Quarkus

Quarkus Hibernate Panache Nedir? Uygulama Örneği

Paylaş

Quarkus Dersleri‘ne devam ediyorum. Bu yazıda Quarkus’un Hibernate ORM implementasyonu olan Quarkus Panache ‘yi inceleyerek Quarkus Panache uygulaması yapacağım.

Quarkus Panache Nedir?


Quarkus Panache, SQL ve NOSQL veritabanları için, Quarkus 1.5.0’dan itibaren (3 Haziran 2020) CRUD (Create, Read, Update, Delete) işlemlerini REST Endpointler yardımı ile yazılımcının yazması gereken kodu minimumda azaltmaktadır. Öne çıkan özellilerinden biri de “Active Record Pattern” desteklemesidir.

Quarkus Panache Uygulama Yöntemleri


  • PanacheEntity

Modelimiz ile birlikte ORM islemlerinin gerceklestirildigi bir modelde olusturudugumuz sınıf. (Active Record Yöntem)

  • PanancheRepository

Model ile ORM islemlerinin ayrı sınıflar olusturarak kullanıldıgı bir yapı. (Repository Yöntemi).

yöntemlerinden bir tanesini kullanarak geliştirme yapabiliriz.

Quarkus Panache Uygulama Örneği


Quarkus Panache tebrübe etmek için Öğrenci bilgilerilerini tutan bir modelimiz ve ona bağlı bir rest servisimiz olacak. Quarkus Panache’yi bu servisimizde kullancağız.

Quarkus Panache veritabanımızın ayarları ve bağlantıları için application.properties dosyamıza tanımlamalarımızı yapalım.

quarkus.datasource.jdbc.url=jdbc:h2:mem:test
quarkus.datasource.username=sa
quarkus.datasource.password=
quarkus.datasource.db-kind=h2
quarkus.hibernate-orm.database.generation=drop-and-create

Modelimizi oluşturalım.

@Entity
public class Ogrenci extends PanacheEntity {

    private String name;
    private String surname;
    
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getSurname() {
    return surname;
  }

  public void setSurname(String surname) {
    this.surname = surname;
  }

  public Ogrenci() {
  }

  public Long getId() {
    return id;
  }

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

  public Ogrenci(Long id, String name, String surname) {
    this.id = id;
    this.name = name;
    this.surname = surname;
  }
}

Modelimizi PanacheEntity extend ederek entitiy sınıfımıza Quarkus Panache özelliği kazandırmış olduk. Panache Entity sınıfını incelersek Crud işlemlerinin içerisinde barındığını ve bizim işimizi çok kolaylaştırdığını göreceğiz.

Şimdi Quarkus Panache Servis katmanımızı yazalım. Burada Quarkus Panache tarafından sunulan metotları kullanarak bir rest servis katmanı oluşturacağız ve CRUD işlemleri yapacağız.

@Path("ogrenci")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ApplicationScoped
public class OgrenciService {

    @POST
    @Transactional
    public Response save(Ogrenci ogrenci) {
        ogrenci.persist();
        return Response.ok(ogrenci).status(201).build();
    }

    @GET
    public List<Ogrenci> get() {
        return Ogrenci.listAll();
        //return Ogrenci.listAll(Sort.by("name"));
    }

    @GET
    @Path("{id}")
    public Ogrenci getSingle(@PathParam("id") Long id) {
        Ogrenci ogr = Ogrenci.findById(id);
        if (ogr == null) {
            throw new WebApplicationException(id + " bulunamadı", 404);
        }
        return ogr;
    }

    @PUT
    @Path("{id}")
    @Transactional
    public Ogrenci update(@PathParam("id") Long id, Ogrenci ogrenci) {
        Ogrenci ogr = Ogrenci.findById(id);
        ogr.setName(ogrenci.getName());
        return ogr;
    }

    @DELETE
    @Path("{id}")
    @Transactional
    public Response delete(@PathParam("id") Long id) {
        Ogrenci ogrdelete = Ogrenci.findById(id);
        ogrdelete.delete();
        return Response.status(200).build();
    }

}

Quarkus Panache kullanarak yaptığımız işlemlerinin ne yaptığına ve özelliklerine bakalım.

  • ogrenci.persist()
    Modelin kayıt işlemini gerçekleştirmektedir.
  • Ogrenci.listAll()
    Ogrenci listesinin tamamını geri döndürmektedir.
  • Ogrenci.listAll(Sort.by(“name”))
    Ogrenci listesinin “name” göre sıralanarak geri döndürmektedir.
  • Ogrenci.findById(id)
    Öğrenci ıd’sine göre ogrenci modelini getirir.
  • ogrdelete.delete();
    Ogrenci modelini siler

Buradaki metotların hepsi Öğrenci modeline bağlıdır ve Öğrenci modelinde operasyonel işlemler bulunduğu içi yani Aktif Kayıf özelliği olduğu için aynı modelin sınıfını kullanarak CRUD operasyonlarını Quarkus Panache ile yapabiliyoruz.

Sonraki Quarkus Dersleri’nde görüşmek üzere.


Projenin Kaynak Kodlarına Ulaş


Önceki Ders: Uygulama Native Derleme
Quarkus Dersleri
Sonraki Ders: Dependency Injection

Tags:

panache nedirQuarkus DersQuarkus Dersleriquarkus hibernate panacheQuarkus native uygulamaquarkus örnekquarkus panachequarkus uygulama örneği

Paylaş

Diğer Yazılar

Quarkus Dersleri Uygulama Örnekleri
Previous

Quarkus Dersleri : Uygulama Native Derleme

Quarkus Dersleri Uygulama Örnekleri
Next

Quarkus Dependency Injection

Next
Quarkus Dersleri Uygulama Örnekleri
10 Ocak 2021

Quarkus Dependency Injection

Previews
29 Aralık 2020

Quarkus Dersleri : Uygulama Native Derleme

Quarkus Dersleri Uygulama Örnekleri

No Comment! Be the first one.

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

Quarkus Dersleri Uygulama Örnekleri

Quarkus Nesnelerin Yaşam Döngüsü

Quarkus Dersleri Uygulama Örnekleri

Quarkus Custom Property Kullanmak

Quarkus Dersleri Uygulama Örnekleri

Quarkus Projelerinde Fault Tolerance Kullanmak

Quarkus Dersleri Uygulama Örnekleri

Quarkus Uygulaması Başlatma ve Kapanma Döngüsünü Yakalamak

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Röportaj
Struts
Android
Vue.js
Node.js
Redis
XCode
Spring Data
Debezium
Mikroservis Mimarisi
Spring Native
Video
Spring Security
Objective C
iPhone Uygulama Geliştirme
JPA
DevOps
PostgreSQL
Apache Kafka
Git
Design Patterns
Yaptığım Projeler
Servlet
Maven
Spring Cloud
Linux
Spring
JDBC
PrimeFaces
Spring Jdbc Template
RabbitMQ
Google
Manset
Spring MVC
OCA Java SE 8
Quarkus
Spring Core
Microsoft
Veritabanı
Tanıyalım
Java SE
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github