KairoYang 2020. 6. 25. 17:52

ORM은 Object-Relational Mapping의 약어이다.

전통적으로는 프로그램이 db를 조작하기 위해서는 명령어(DB query string)를 생성하여 db에 명령을 주고 결과를 받았다. 그 뒤로는 db를 프로그램 객체에 연결하여 사용하는 것이 orm 

예를 들어 db에 student라는 리스트(table,collection)이 존재하고 거기 안에 name,age가 있다.  이 리스트를 orm으로 불러오면 name,age의 항목을 가진 student object 의 배열이 생성되어 리스트를 읽는 것뿐만 아니라 리스트를 수정한 후 db에 그대로 저장할 수 있다.

 

orm은 db 데이터와 프로그램의 object를 연결하면 db와 프로그래머 사이의 중간 역할을 한다. 직접 명령하지 않고 ㅇ녀결된 객체의 함수를 사용해서 db에 명령을 내린다.

장점: 프로그래머가 db언어 몰라도 db에 명령내릴수 있다.

단점: db에 직접 명령을 내리지 않고 한단계 거치기 때문에 느리다.

 orm이 지정해 놓은 명령만 가능. 속도가 느려지지만 사람이 느끼지 못할정도다. 하지만 수천,수만개의 데이터를 처리하거나 db 속도가 중요하면 orm을  사용하지 않는다. 

 

Model : orm은 프로그램이 db를 객체에 연결하는 것 자체를 뜻하면 model은 이때 연결된 객체이다. stduent object가 모델이다. 

Shema는 모델의 대상에 대한 구체적인 구조를 뜻한다. student 모델의 name,age를 스키마라고한다.

 

mongoose는 orm을 사용하게 해주는 library이다. 

var studentSchema = mongoose.Schema({

  name: {type:String, required:true},

  age: {type:Number, required:true} });

var Student = mongoose.model('student',studentSchema);

 

schema는 model의 구조및 설정이고, model은 실제 db에 접근할 수 있는 객체이다.  Model 객체는 주로 첫글자를 대문자로 사용한다.