Prisma ORM ile Raw SQL Kullanımı


Prisma ORM ile Raw SQL Kullanımı

Modern web projelerinde kullanılan ORM (Object-Relational Mapping) teknolojileri, geliştiricilere veritabanı işlemlerini daha kolay ve tip güvenli şekilde gerçekleştirme imkanı sunar. Prisma ORM, Node.js tabanlı projelerde öne çıkan ORM araçlarından biri olarak hem esnek yapılandırması hem de geliştirici deneyimini artıran özellikleriyle dikkat çeker. Ancak bazı kompleks sorgular veya ileri düzey veritabanı işlemleri gerektiğinde, Prisma'nın raw SQL kullanımı devreye girer. Bu yazıda, "Prisma ORM ile raw SQL kullanımı" konusunu detaylarıyla ele alacağız.

Prisma ORM'de Raw SQL Nedir?

Prisma ORM, genellikle kendi sağladığı metodlarla çalışır, ancak standart metotların yetersiz kaldığı anlarda doğrudan SQL kodları çalıştırmak gerekebilir. İşte burada prisma.$queryRaw ve prisma.$executeRaw metodları devreye girer. Bu metotlar ile veritabanına doğrudan SQL sorguları gönderilebilir; dinamik ve karmaşık işlemler gerçekleştirilebilir. Özellikle performans optimizasyonları ve iddialı sorgular için raw SQL kullanımı önemli bir avantaj sağlar.

Prisma'da $queryRaw Örnekleri

Prisma ORM ile raw SQL kullanırken genellikle $queryRaw metodu ile veri çekme işlemleri yapılır. Kullanımı oldukça basittir:

// Örnek: Tüm kullanıcıların çekilmesi
type User = {
  id: number,
  email: string,
  name: string
};

const users: User[] = await prisma.$queryRaw`SELECT * FROM "User"`;
console.log(users);

Yukarıdaki örnekte, "User" tablosundan tüm kullanıcılar çekilmiştir. Raw SQL ile daha esnek sorgular geliştirebilirsiniz.

Parametreli Raw SQL ve Güvenlik

Raw SQL sorguları yazarken SQL Injection gibi güvenlik açıklarına karşı dikkatli olunmalıdır. Prisma ORM, $queryRaw içinde parametreli sorguları güvenli şekilde destekler:

const id = 10;
const user = await prisma.$queryRaw`SELECT * FROM "User" WHERE id = ${id}`;
console.log(user);

Bu şekilde bind edilen değişkenler Prisma tarafından otomatik olarak kaçışlandığından, güvenli sorgular oluşturulur.

$executeRaw ile Veri Güncelleme

$executeRaw metodu ise veri ekleme, silme veya güncelleme gibi işlemler için kullanılır. Örneğin:

await prisma.$executeRaw`UPDATE "User" SET name = 'Yeni İsim' WHERE id = 1`;

Böylece Prisma ORM ile hem okuma ($queryRaw) hem de yazma/güncelleme ($executeRaw) işlemlerinde raw SQL kullanımı ile tam kontrol sağlanır.

Sonuç: Raw SQL Kullanırken Dikkat

Prisma ORM ile raw SQL kullanımı, projelerde esneklik ve güç kazandırsa da, sorguların anlaşılır ve güvenli şekilde yazılması büyük önem taşır. Özellikle dinamik değerlerle çalışırken, mutlaka parametreli sorguları (`... ${değer}`) tercih etmelisiniz. Böylece hem esneklikten faydalanır hem de Prisma'nın sunduğu güvenlikten ödün vermemiş olursunuz.