MVC
소프트웨어 설계와 관련된 디자인 패턴으로 소프트웨어 공학에서의 흔히 사용되는 설계패턴
MVC는 Model, View, Controller 3가지로 역할을 나누어 코드에 대한 유지보수를 용이하게 개발하는 방법론이다.
MVC 패턴의 흐름은 간단히 설명하면 다음과 같다.
서비스의 기능이 많아질수록 컨트롤러에 업무가 과중되고, 컨트롤러가 뷰와 모델에 의존적이게 된다. 따라서, 코드를 수정하기 어렵고, 여러 side-effect를 일으킬 수 있다.
Object-Relational Mapping
자바스크립트의 객체와 관계형 데이터베이스의 엔티티 사이의 다리 역할
var Sequelize = require('sequelize');
var db = new Sequelize('chatter','root',''); //(db이름, user, password)
var User = db.define('User', { //define 메소드로 스키마를 작성하는 과정
username: Sequelize.STRING
//mysql에서는 varchar(255)로 썼는데, rdbms 사이의 호환성을 유지시키기 위해 sequelize에서 타입을 만든 것
//sequelize에서 자동으로 id(pk), created_at, update_at 등을 자동으로 생성
});
var Message = db.define('Message', {
userid: Sequelize.INTEGER,
text: Sequelize.STRING,
roomname: Sequelize.STRING
});
User.sync()
.then(function(){
return User.create({ username : 'Jean Valjean' });
//객체를 사용해 새로운 레코드 생성하는 과정. SQL에서는 INSERT INTO를 사용했었다
})
.then(function(){
return User.findAll({ where : { username : 'Jean Valjean' } });
})
.then(function(users){
users.forEach(function(user){
console.log(user.username + ' exists');
});
db.close();
})
.catch(function(err){
console.err(err);
db.close();
});
예를 들어 '송금'을 하기 위해서는 다음 세개의 과정이 발생한다
1. 통장 조회
2. 통장 출금
3. 다른 통장으로 입금
만약, 출금은 이뤄졌지만 데이터베이스에 문제가 발생해 다른 통장으로 입금에 실패했다면 'Rollback'을 해주어야한다.
이처럼 하나의 쿼리를 작업단위로 보고 문제가 생기면 rollback, 성공했으면 commit을 해주는 것을 Transaction이라고 한다.
reference