2021-06-09 11:08:07
Как работает ORM?#architecture #orm
Существует извечный спор ORM или SQL-запросы в коде. Я предпочитаю не спорить, а использовать и то, и другое.
Начнем с определений. ORM (Object-Relational Mapping) – это слой между базой данных и приложением, который занимается созданием, обновлением, чтением и удалением записей в базе данных. ORM упрощает работу с базой данных генерируя запросы из кода. Для этого необходимо описать модели, т.е. структуры таблиц. #nodejs разработчики делают это или через схему, или через TypeScript декораторы. Примеры:
// schema approach
import { Sequelize, DataTypes } from 'sequelize';
class User extends Model {}
User.init({
username: DataTypes.STRING,
birthday: DataTypes.DATE
});
// decorator approach
import { Entity, Column } from 'typeorm';
@Entity()
class User {
@Column() username: string;
@Column('date') birthday: string;
}
Модели используются для генерации запросов и правильной cериализации/деcериализации данных, т.е. мэпинга записей из БД в JS объекты.
Существует практика использования getter/setter в моделях. Например, на основание birthday можно сделать getter age. Если по этому полю необходимо будет строить запросы, то getter/setter не позволит это делать. В этом случае правильней будет сделать вычисляемое поле на уровне базы данных. В Postgres для этого используется Generated Columns.
787 viewsedited 08:08