最近在自己的框架集成了 Typeorm,Typeorm 给我感觉很清爽,不管是接口定义,还是代码实现特别易懂,可读性很高。如果你了解过其它 orm 框架,学习成本很低。另外,与自己的框架集成也特别简单。
Typeorm 是一个较新的框架,功能的完整度还不够,一些高级功能还缺少,经常用的功能还算可以。不过,更新还是挺积极的,未来会越来越完善。
Typeorm 没有历史包袱,又借鉴了前人的经验,走得很快。技术栈很新,一开始就使用 ts 开发,很多地方使用了装饰器,与 jpa 的设计很像,如果你了解 jpa,会特别有亲切感。
Typeorm 对 Serverless 场景的支持有待优化,在数据库重链接方面有些问题待解决。
以下是自己框架集成后的开发体验:(AOP 事物管理,感兴趣可以看看我的集成方案:https://github.com/cellbang/malagu)
import { Controller, Get, Param, Delete, Put, Post, Body } from '@malagu/mvc/lib/node';
import { Transactional, OrmContext } from '@malagu/typeorm/lib/node';
import { User } from './entity';
@Controller('users')
export class UserController {
@Get()
@Transactional({ readOnly: true })
list(): Promise {
const repo = OrmContext.getRepository(User);
return repo.find();
}
@Get(':id')
@Transactional({ readOnly: true })
get(@Param('id') id: number): Promise {
const repo = OrmContext.getRepository(User);
return repo.findOne(id);
}
@Delete(':id')
@Transactional()
async reomve(@Param('id') id: number): Promise {
const repo = OrmContext.getRepository(User);
await repo.delete(id);
}
@Put()
@Transactional()
async modify(@Body() user: User): Promise {
const repo = OrmContext.getRepository(User);
await repo.update(user.id, user);
}
@Post()
@Transactional()
create(@Body() user: User): Promise {
const repo = OrmContext.getRepository(User);
return repo.save(user);
}
}
Malagu 官方技术交流 QQ 群:1013685855
Malagu 官方技术交流钉钉群:31992376