乐闻世界logo
搜索文章和话题

What is the difference between TypeORM's Active Record and Data Mapper patterns?

2月17日 22:44

Difference between TypeORM's Active Record and Data Mapper patterns:

Active Record Pattern:

  • Entity classes directly contain data access logic
  • Use extends BaseEntity or @Entity() decorator
  • Example:
    typescript
    @Entity() export class User extends BaseEntity { @PrimaryGeneratedColumn() id: number; static async findByName(name: string) { return this.createQueryBuilder('user') .where('user.name = :name', { name }) .getMany(); } } // Usage const user = new User(); user.name = 'John'; await user.save();

Data Mapper Pattern:

  • Entity classes only contain data, no data access logic
  • Use Repository for data operations
  • Example:
    typescript
    @Entity() export class User { @PrimaryGeneratedColumn() id: number; } // Usage const userRepository = dataSource.getRepository(User); const user = new User(); user.name = 'John'; await userRepository.save(user);

Recommendations:

  • Active Record: Suitable for small projects, rapid development
  • Data Mapper: Suitable for large projects, better separation of concerns and testability
标签:TypeORM