파이썬 기반의 무료 오픈소스 웹 애플리케이션 프레임워크(Open Source Web Application Framework)이다. MTV(Model - Template - View) 아키텍처를 따르고, ORM(Object Relational Mapper)이 프로젝트의 객체들을 데이터베이스 테이블과 매핑을 도와주어 복잡한
데이터 기반 웹 사이트 개발이 쉬워질 수 있다.
Instagram, Disqus, Mozilla, NASA 등이 Django로 개발되었다.
■ 장점
파이썬 기반 웹 프레임워크
파이썬의 라이브러리를 사용할 수 있다.
오픈소스
기본적인 기능들을 미리 만들어 제공해 쉽고 빠르게 개발
웹 애플리케이션이 제공되어야하는 사용자 인증, 사용자 관리 등을 기본적으로 기능 구현이 되어 있다.
Full Stack Framework : front, backend 등 서버가 필요로 하는 것을 모두 Django가 맡아서 함.
■ 단점
Django 에서 기본적으로 수많은 기능을 제공하지만 그만큼 세세한 설정 변경이나 자세한 조정이 힘들다.
자료를 데이터베이스에 저장하는 과정을 도와주고 자동화하는 매개 소프트웨어이다. 이는 응용 프로그램과 데이터베이스 사이에서 벌어질 수 있는 개념적 간극을 추상화해 준다. 한마디로, 데이터를 가공하는 자바 객체 층과 데이터를 저장하는 데이터베이스 층 사이를
매끄럽게 연결하는 이음매이다.
1. ORM(Object Relational Mapping)
객체(Object)와 관계형 데이터베이스(RDBMS)을 매핑하여 데이터베이스 테이블을 객체지향적으로 사용하기 위한 기술이다. ORM을 사용한다면, SQL문 작성 없이 매핑하는 설정만으로 DB 테이블내의 데이터를 객체로 전달 받을 수 있다.
- ORM을 사용하기 위한 표준 인터페이스를 모아둔 JPA(Java Persistence API) - JPA 구현체로 ORM Framework Hibernate가 있다.
2. SQL Mapper
객체(Object)와 SQL 문을 매핑하여 데이터를 객체화하는 기술을 뜻한다. 객체와 관계를 매핑하기보다는 SQL문의 질의 결과와 객체를 매핑시켜주기 때문에 ORM과는 다른 기술이라고 할 수 있다. 대표적인 프레임워크로는 iBatis, MyBatis, Oracle SQLJ 가 있다.
아이터레이터(iterator)는 next 함수를 이용해 데이터에 순차적으로 접근이 가능한 Object 이다.
일반함수와 제너레이터(Generator) 함수의 차이점은 yield 사용함에 있다.
일반함수는 사용이 종료되면 결과값을 호출부로 반환 후 함수 자체를 종료시킨 후 메모리 상에서 클리어되지만, 제너레이터(Generator)함수는 yield를 기점으로 next() 를 통해 반환 값을 호출한 쪽으로 전달하고 그 상태로 유지된다. 따라서 메모리에 그대로 유지되는 것이다.
■ 예시
for 문이 실행되며, 먼저 generator 함수가 호출된다.
generator 함수는 일반 함수와 동일한 절차로 실행된다.
실행 중 while 문 안에서 yield 를 만나게 된다. 그러면 return 과 비슷하게 함수를 호출했던 구문으로 반환하게 된다. 여기서는 첫번재 i 값인 0 을 반환하게 된다. 하지만 반환 하였다고 generator 함수가 종료되는 것이 아니라 그대로 유지한 상태이다.
x 값에는 yield 에서 전달 된 0 값이 저장된 후 print 된다. 그 후 for 문에 의해 다시 generator 함수가 호출된다.
이때는 generator 함수가 처음부터 시작되는게 아니라 yield 이후 구문부터 시작되게 된다.따라서 i += 1 구문이 실행되고 i 값은 1로 증가한다.
아직 while 문 내부이기 때문에 yield 구문을 만나 i 값인 1이 전달 된다.
x 값은 1을 전달 받고 print 된다. (이후 반복)
def generator(n):
i = 0
while i < n:
yield i
i += 1
for x in generator(5):
print(x)
# ※ 출력 결과
# 0
# 1
# 2
# 3
# 4