Prisma 주요 명령어1. prisma migrate데이터베이스 스키마 변경사항을 추적하고 관리하는 명령어 세트입니다.prisma migrate dev: 개발 환경에서 마이그레이션 파일을 생성하고 적용합니다. 변경 내용을 추적하는 히스토리를 남깁니다.prisma migrate reset: 데이터베이스를 초기화하고 모든 마이그레이션을 처음부터 다시 적용합니다.prisma migrate deploy: 프로덕션 환경에서 마이그레이션을 실행합니다. 히스토리를 따라 마이그레이션을 순차적으로 적용합니다.prisma migrate status: 현재 마이그레이션 상태를 확인합니다.2. prisma generatePrisma Client를 생성하는 명령어입니다.schema.prisma 파일을 기반으로 타입 안전한 데..
// App Router 사용 예제// ------------------------------// Next.js App Router (app/ 디렉토리)// 1. 기본 페이지 구조 - app/page.tsxexport default function HomePage() { return ( Next.js App Router 예제 App Router를 사용한 홈페이지입니다. );}// 2. 중첩 라우팅 - app/products/page.tsxexport default function ProductsPage() { return ( 제품 목록 제품 1 제품 2 제품 3 );}// 3. 동적 ..
-- 스키마 권한 부여GRANT USAGE ON SCHEMA public TO postgres, anon, authenticated, service_role;-- 모든 테이블에 대한 권한 부여GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO postgres, anon, authenticated, service_role;-- 모든 시퀀스에 대한 권한 부여GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO postgres, anon, authenticated, service_role;-- 모든 함수에 대한 실행 권한 부여GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO..
Supabase의 UUID 값을 id BigInt @id @default(autoincrement()) 대신 사용하는 것은 일반적으로 안전하며, 많은 경우에 더 나은 선택일 수 있습니다. 각각의 장단점을 고려하여 프로젝트의 요구 사항에 맞게 결정하는 것이 중요합니다.BigInt @id @default(autoincrement())의 특징 및 고려 사항:장점:성능: 숫자형 ID는 인덱싱 및 비교 연산에서 UUID보다 약간 더 빠를 수 있습니다. 특히 데이터베이스 규모가 매우 커지는 경우에 미미한 성능 향상을 기대할 수 있습니다.순차적인 정렬: 자동 증가하는 숫자는 생성 순서대로 정렬하기 쉽습니다.간결함: UUID보다 사람이 읽고 이해하기 쉽습니다.단점:확장성 및 병합: 여러 데이터베이스 또는 분산 시스템 ..
Prisma의 보안 강점서버 사이드 전용: Prisma는 서버에서만 실행되므로 데이터베이스 접근 로직과 자격 증명이 클라이언트에 노출되지 않습니다.SQL 인젝션 방지: Prisma는 파라미터화된 쿼리를 사용하여 SQL 인젝션 공격을 자동으로 방지합니다.접근 제어: 애플리케이션 로직을 통해서만 데이터베이스에 접근할 수 있어, 세밀한 접근 제어가 가능합니다.타입 안전성: TypeScript와의 통합으로 런타임 오류를 줄이고 보안 취약점이 발생할 가능성을 낮춥니다.Supabase의 보안 고려사항클라이언트 노출: 클라이언트에서 직접 데이터베이스 작업을 수행할 수 있어, 잘못 구성될 경우 보안 위험이 있습니다.RLS(Row Level Security): Supabase는 PostgreSQL의 RLS를 사용하여 보..
Supabase vs Firebase: 비교 분석Supabase와 Firebase는 모두 백엔드 개발을 간소화하기 위해 데이터베이스, 인증, 스토리지 등 다양한 기능을 제공하는 Backend-as-a-Service (BaaS) 플랫폼입니다. 하지만 데이터베이스 구조, 가격 정책, 커스터마이징 가능성, 생태계 지원 측면에서 큰 차이가 있습니다. 아래는 두 플랫폼의 상세 비교입니다.주요 차이점데이터베이스 구조Supabase: PostgreSQL 기반의 관계형 SQL 데이터베이스를 사용합니다. 복잡한 관계형 데이터와 고급 쿼리 기능이 필요한 경우 적합합니다.Firebase: Firestore라는 NoSQL 문서 기반 데이터베이스를 사용합니다. 유연하거나 비구조적인 데이터 모델에 적합합니다.오픈소스 여부Supa..
1. 필요한 패키지 설치터미널에서 다음 명령어를 실행하여 NextAuth, MySQL2(프로미스 지원), bcryptjs 패키지를 설치합니다.npm install next-auth mysql2 bcryptjs2. NextAuth API 라우트 생성Next.js의 API 라우트를 사용하여 인증 엔드포인트를 생성합니다. (Next.js 13 기준으로 pages 디렉터리를 사용하는 경우의 예제이며, app 디렉터리 사용 시에는 약간의 구조 차이가 있습니다.)파일 경로: pages/api/auth/[...nextauth].ts"use server";import NextAuth from "next-auth";import CredentialsProvider from "next-auth/providers/creden..
1. 프로젝트 루트에 .env 파일 생성프로젝트 루트(예: package.json 파일이 위치한 곳)에 .env 파일을 생성합니다.보통 민감한 정보(예: 데이터베이스 접속 정보, API 키 등)를 저장합니다.MYSQL_HOST=localhostMYSQL_USER=your_mysql_usernameMYSQL_PASSWORD=your_mysql_passwordMYSQL_DATABASE=your_database_name주의:클라이언트 사이드에서 사용해야 하는 변수는 반드시 NEXT_PUBLIC_ 접두사를 붙여야 합니다.예: NEXT_PUBLIC_API_URL=https://example.com/api2. Next.js가 .env 파일을 자동으로 로드Next.js는 기본적으로 프로젝트 루트의 .env, .env..
✅ route.ts(라우트 API) vs. Server Actions 비교라우트 API (route.ts) 서버 액션 (use server)방식HTTP 요청(예: fetch, axios)을 통해 API 엔드포인트를 호출서버에서 직접 함수를 호출하여 실행사용법app/api/.../route.ts에 작성 (GET, POST, PUT, DELETE 가능)use server 키워드를 사용하여 서버 함수 실행보안API 호출을 통한 요청이므로 CSRF 방어 필요클라이언트에서 직접 실행할 수 없어 CSRF 공격 걱정 없음유연성외부 API와의 통합이 용이클라이언트와의 직접적인 상호작용에 적합상태 관리fetch 요청으로 데이터를 가져와야 함클라이언트 컴포넌트에서 바로 실행 가능최적화캐싱 및 CDN을 활용할 수 있음페이지..
서버 컴포넌트와 Propsuse server 지시자를 사용한 서버 컴포넌트는 props를 통해 데이터를 받을 수 있습니다. 예를 들어, 부모 컴포넌트에서 서버 컴포넌트로 데이터를 전달하면, 서버에서 렌더링될 때 이 props를 활용해 동적으로 콘텐츠를 생성할 수 있습니다. 이는 React의 컴포넌트 간 데이터 전달 방식과 유사하며, 서버 측에서 실행되는 특성을 갖습니다.예시:// 부모 컴포넌트// ServerComponent.jsx"use server";export default function ServerComponent({ data }) { return {data}; // "안녕하세요" 출력}API 라우트와 데이터 처리반면, API 라우트는 HTTP 요청을 통해 데이터를 주고받는 방식으로 동작합니다..
- Total
- Today
- Yesterday
- java.sql
- java 키워드 정리
- java web-mvc
- 메이븐(maven)
- await
- docker
- In App Purchase
- REST API
- 스프링 프레임워크(spring framework)
- 특정 문자를 기준으로 자르기
- nl2br
- 제품 등록
- 스프링 시큐리티(spring security)
- jsp 오픈 소스
- error-java
- 표현 언어(expression language)
- System.Diagnostics
- .submit()
- React
- MainActor
- jstl(java standard tag library)-core
- java-개발 환경 설정하기
- 스프링 시큐리티(spring security)-http basic 인증
- 스프링 프레임워크(spring framewordk)
- system.io
- 인텔리제이(intellij)
- 람다식(lambda expression)
- 진수 변환
- jstl(java standard tag library)
- 문자 자르기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |