TypeORM Relations ve İlişkiler Hakkında Detaylı Rehber


TypeORM Relations ve İlişkiler Hakkında Detaylı Rehber

TypeORM Relations Nedir?

TypeORM, popüler bir TypeScript tabanlı ORM (Object Relational Mapper) kütüphanesidir ve modern web uygulamalarında veritabanı işlemlerini kolaylaştırır. "TypeORM Relations ve İlişkiler" kavramı, veriler arasında bağlantı kurmanın ve ilişkili verileri yönetmenin anahtarıdır. TypeORM, OneToOne, OneToMany, ManyToOne ve ManyToMany ilişkilerini kolay ve okunabilir biçimde tanımlamanıza imkân verir. Bu rehberde, TypeORM relations kavramı, ilişki tipleri ve örnek kodlarla kullanım detaylarını bulabilirsiniz.

TypeORM İlişki Tipleri ve Kullanımı

TypeORM ilişkilerinde, genellikle iki entity arasında bağlantı kurulur. Aşağıda en sık kullanılan ilişki türleri gösterilmiştir. Hem teori hem de uygulamasına dair açıklamalarla birlikte, TypeORM Relations ve İlişkiler hakkında fikir sahibi olacaksınız.

OneToOne İlişki

import { Entity, PrimaryGeneratedColumn, Column, OneToOne, JoinColumn } from "typeorm";

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @OneToOne(() => Profile)
  @JoinColumn()
  profile: Profile;
}

@Entity()
export class Profile {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  bio: string;
}

Bu örnekte User ile Profile arasında bire bir ilişki (OneToOne) tanımlanmış ve TypeORM relations özellikleri kullanılmıştır.

OneToMany & ManyToOne İlişki

import { Entity, PrimaryGeneratedColumn, Column, OneToMany, ManyToOne } from "typeorm";

@Entity()
export class Author {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @OneToMany(() => Post, post => post.author)
  posts: Post[];
}

@Entity()
export class Post {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  title: string;

  @ManyToOne(() => Author, author => author.posts)
  author: Author;
}

Burada bir Author birden fazla Post oluşturabilir, yani OneToMany, her Post ise tek bir Author ile ilişkilidir, yani ManyToOne ilişki kullanılmıştır. Relation tanımlarında, ters ilişkiler için property isimlerine dikkat edilmelidir.

ManyToMany İlişki

import { Entity, PrimaryGeneratedColumn, Column, ManyToMany, JoinTable } from "typeorm";

@Entity()
export class Student {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @ManyToMany(() => Course, course => course.students)
  @JoinTable()
  courses: Course[];
}

@Entity()
export class Course {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  title: string;

  @ManyToMany(() => Student, student => student.courses)
  students: Student[];
}

Bu kodda, Student ve Course arasında ManyToMany (çoktan çoğa) ilişki kurulmuştur. @JoinTable dekoratörü, TypeORM relations için ilişki tablosu oluşturmanızı sağlar.

Sonuç: TypeORM Relations ve İlişkiler ile Etkili Veritabanı Yönetimi

TypeORM Relations ve İlişkiler, projelerinizde veritabanı modellemesini kolaylaştırır ve karmaşık ilişkileri anlaşılır hâle getirir. Farklı ilişki tiplerini bilmek, veri tutarlılığını sağlamak ve uygulamanızın sürdürülebilirliğini artırmak için gereklidir. TypeORM Relations'ı projenizde etkin şekilde kullanarak, veritabanında ilişkisel bütünlüğü ve performansı kolayca yönetebilirsiniz.