>웹 프론트엔드 >JS 튜토리얼 >ORM 및 javaScript에서 TypeOrm을 사용하여 MongoDb에서 MySql 데이터베이스로 데이터 마이그레이션/추가

ORM 및 javaScript에서 TypeOrm을 사용하여 MongoDb에서 MySql 데이터베이스로 데이터 마이그레이션/추가

Linda Hamilton
Linda Hamilton원래의
2024-12-23 17:20:18824검색

ORM이란 무엇인가요?
객체 관계형 매핑 또는 간단히 ORM은 원시 데이터베이스 쿼리를 작성하지 않고도 데이터베이스와 상호 작용할 수 있도록 도와주는 라이브러리 또는 도구입니다.

데이터베이스 테이블과 행을 직접 관리하는 대신 코드의 일부 객체로 작업하고 ORM은 이 객체를 데이터베이스 쿼리로 변환하며, 데이터가 데이터베이스에서 다시 검색되면 ORM은 데이터를 다시 객체로 매핑합니다.

ORM은 객체 지향 프로그램과 관계형 데이터베이스 사이에 다리를 만듭니다.

사용 사례:
javaScript/TypeScript 애플리케이션을 생성 중이고 백엔드 서비스용 데이터베이스가 필요한 경우 ORM을 사용하여 애플리케이션을 데이터베이스에 연결할 수 있습니다.

ORM and Migrating/Adding Data to MySql Database from MongoDb using TypeOrm in javaScript

다양한 언어로 사용되는 ORM은 다음과 같습니다.

  1. JavaScript/TypeScript : TypeOrm, Sequelize
  2. Python : Django ORM, SQLAlchemy
  3. 자바: 최대 절전 모드

애플리케이션에서 ORM을 사용해야 하는 이유는 무엇입니까?

  1. 보안을 향상시키고 SQL 주입 공격 가능성을 제거하기 위해 ORM 도구가 구축되었습니다
  2. SQL을 사용할 때보다 ORM 도구를 사용할 때 코드 작성량이 적습니다.
  3. TypeORM을 사용하면 한 데이터베이스에서 다른 데이터베이스로(예: MySQL에서 PostgreSQL로) 전환이 간단하고 최소한의 변경만 필요하므로 데이터베이스 요구 사항이 발전하는 프로젝트에 매우 적합합니다.

이제 javaScript에서 TypeOrm을 사용하여 mongodb의 데이터를 Mysql 데이터베이스에 추가하는 방법을 살펴보겠습니다.

가장 먼저 해야 할 일은 MySql과 MongoDb에 대한 연결을 설정하는 것입니다

먼저 지정된 자격 증명과 호스트 정보를 사용하여 MySql 데이터베이스에 연결할 DataSource를 사용하여 구성을 정의합니다. 또한 엔터티 클래스를 데이터베이스 테이블에 매핑하여 orm 기능을 활성화합니다. 이에 대한 코드는 다음과 같습니다.

여러분이 더 잘 이해할 수 있도록 제가 작업한 간단한 대학 모델을 사용하겠습니다.

파일명 : connect.js

const { College } = require('./sqlmodels/College.model');   //taking model as a example here 
const sqlDataSource = new DataSource({
    type: "mysql",
    host: "XXXX", 
    port:  3306,
    username: 'myUserName',
    password: 'MyPassWord',
    database: 'MyDb',
    driver: require("mysql2"),  
    connectTimeout: 10000,
    entities: [
         College  // define all your entities here 
    ],
    synchronize: true,
    logging: false
}); 

이제 sqlDataSource에 정의된 자격 증명과 구성을 사용하여 MySQL 데이터베이스에 연결하세요. 여기에 대한 코드가 있습니다

module.exports.connectSQL = async function () {
    try {
        console.log("Trying to connect to SQL Database...");
        await sqlDataSource.initialize();
        console.log("Successfully connected to SQL Database");
    } catch (error) {
        console.error("Error occured while connecting SQL", error);

    }
}

항상 적절한 로그가 포함된 try catch 블록 내에 코드를 작성하면 실수할 경우를 대비해 코드를 더 빠르게 디버깅하는 데 도움이 됩니다.

계속 진행하기 전에 mongoDb 데이터베이스에 대한 연결이 올바른지 확인하세요.

먼저 별도의 폴더에 테이블의 스키마를 정의하고 이름을 sqlmodels로 지정하고 그 안에 모델에 대한 페이지를 생성하겠습니다.
연결을 위한 코드(첫 번째 코드)를 작성한 connect.js 파일에서 이 파일을 가져와야 합니다

대학 스키마 코드는 다음과 같습니다

const { EntitySchema, Entity, Column } = require('typeorm');

module.exports.College = new EntitySchema({
    name: 'College',
    tableName: 'College',
    columns: {
        _id: {
            primary: true,     // true if _id is your primary key
            type: 'varchar',  // define the type 
            length: 255,

        },
        college_name: {
            // define name of the column and its properties
            name: 'college_name', 
            type: 'varchar',
            length: 255,
            default: 'NO COLLEGE', 
            nullable: false

        }
    }

})

mongoDb 연결이 설정되어 있고 이에 대해 정의된 스키마도 있는지 확인하세요.

이제 마지막이자 중요한 일은 mongoDb에서 데이터를 가져와 SQL 테이블에 추가하는 함수를 작성하는 것입니다.

const { College } = require('./sqlmodels/College.model');   //taking model as a example here 
const sqlDataSource = new DataSource({
    type: "mysql",
    host: "XXXX", 
    port:  3306,
    username: 'myUserName',
    password: 'MyPassWord',
    database: 'MyDb',
    driver: require("mysql2"),  
    connectTimeout: 10000,
    entities: [
         College  // define all your entities here 
    ],
    synchronize: true,
    logging: false
}); 

여기서는 척으로 데이터를 가져온 다음 테이블에 삽입했습니다. mongoDb에서는 한 번에 많은 양의 데이터를 가져오는 것이 불가능하므로 대량의 데이터를 처리하는 경우 도움이 될 것입니다.

이 블로그가 처음이므로 제 자신을 발전시키기 위한 여러분의 제안과 피드백을 환영합니다.
읽어주셔서 감사합니다 ?

위 내용은 ORM 및 javaScript에서 TypeOrm을 사용하여 MongoDb에서 MySql 데이터베이스로 데이터 마이그레이션/추가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.