Next.js Backend

Database Integration

Prisma, Drizzle, server components with database, and connection pooling.

Advertisement

Database Integration

Prisma, Drizzle, server components with database, and connection pooling.

Overview

Next.js works seamlessly with databases through ORMs and direct connections.

Key Concepts

  • Prisma — Type-safe database ORM
  • Drizzle — Lightweight TypeScript ORM
  • Server Components — Direct database access
  • Connection Pooling — Manage database connections
  • Migrations — Version control for database schema

Code Examples

// lib/prisma.js
import { PrismaClient } from '@prisma/client';

const globalForPrisma = globalThis;
export const prisma = globalForPrisma.prisma || new PrismaClient();

if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;

// app/products/page.js
import { prisma } from '@/lib/prisma';

async function ProductsPage() {
  const products = await prisma.product.findMany({
    include: { category: true },
    orderBy: { createdAt: 'desc' }
  });

  return (
    <ul>
      {products.map(product => (
        <li key={product.id}>
          {product.name} - {product.category.name}
        </li>
      ))}
    </ul>
  );
}

// Server Action with database
'use server';
import { prisma } from '@/lib/prisma';
import { revalidatePath } from 'next/cache';

export async function createProduct(formData) {
  const name = formData.get('name');
  const price = parseFloat(formData.get('price'));
  
  await prisma.product.create({
    data: { name, price }
  });
  
  revalidatePath('/products');
}

Practice

Build a CRUD app with Prisma, including relations and server actions.