Database TIL 08
2021년 9월 1일에 작성된 문서 2번 입니다.
데이터 베이스 배운 내용을 정리했습니다.
ORM
Object-Relational Mapping
이 때, object는 객체, Relational Database는 mySQL을 생각하면 된다. 이 둘 사이의 통역사 역할이 ORM.
- ORM을 이용하면 관계형 데이터베이스의 entitiy, 레코드 등에 대해서 마치 자바스크립트에 있는 객체나 클래스를 다루듯이 취급이 가능하다.
- SQL문 없이 데이터베이스에 접근이 가능하다.
class Person (...) {
...
}
const person = new Person(...);
//데이터베이스 세계에서 엔티티 정의를 가지고
//하나의 레코드를 만드는 것과 동일하다. => 새로운 레코드 생성
//레코드를 출력
console.log(person.name); // "John"
console.log(person.phone);//배열로 묶여 조회 가능
// ["010-1234-5678",
// "+82-02-123-4567", ...]
Sequelize
- 프로미스를 지원하는 Node.js ORM이다.
- 지원하는 RDBMS :
- Postgres
- MySQL
- MariaDB
- SQLite
- Microsoft SQL Server
ORM 예시 코드
var Sequelize = require('sequelize');
//sql의 sequelize 모듈을 가져온다.
var db = new Sequelize('chatter', 'root', '');
//db로 연결고리를 만든다.
//chatter는 데이터베이스 이름, root는 유저 이름.
//공백 부분은 비밀번호 부분이다.
var User = db.define('User', {//엔티티를 기술하는 코드
//db.define은 스키마를 작성하는 부분이다.
username: Sequelize.STRING
//username은 필드 이름.
//Sequelize.STRING 요런식으로 필드 타입을 입력.
//RDBMS사이의 다양한 필드 타입의 호환성을 유지하기 위해
//Sequelize에서 타입을 만든것임.
});
var Message = db.define('Message', {
userid: Sequelize.INTEGER,
text: Sequelize.STRING,
roomname: Sequelize.STRING
}); //마치 클래스처럼 사용할 수 있게 만든다.
User.sync()//객체지향 코드와 데이터 베이스를 싱크
//코드와 스키마를 일치 시켜준다.
//프로미스 형태니까 then을 쓰지!
.then(function() {
return User.create({username: 'Jean Valjean'});//해당 값은 객체로 채워 넣는다.
//User.create 하나의 새로운 레코드를 만드는 과정
//SQL에서 insert into ~ values ~ 와 동일
})
.then(function() {
return User.findAll({ where: {username: 'Jean Valjean'} });
})//SQL에서 select all~ where~ 과 동일
.then(function(users) {
users.forEach(function(user) {
console.log(user.username + ' exists');
});
db.close();
})
.catch(function(err) {
console.error(err);
db.close();
});
Written with StackEdit.
Author And Source
이 문제에 관하여(Database TIL 08), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@heewonkim-dev/Database-TIL-08저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)