Page tree

데이타베이스 추상화

웹 개발 환경에서 데이타베이스는 굉장히 중요한 요소이며 PHP 는 MySQL, PostgreSQL, SQLite, MS-SQL Server, Oracle, Cubrid 등 다양한 DBMS 를 지원하고 있습니다. 

라라벨은 Java의 JDBC 처럼 DB 레이어를 추상화한 레이어인 PDO(PHP Data Objects) 를 사용하므로 mysql_fetch_array 나 oci_fetch_array 처럼 특정 벤더에 의존적이지 않은 함수를 사용하지 않고 데이타베이스 관련 코드를 작성할 수 있습니다.

또 의존성 주입을 사용하여 런타임에 사용할 DB 를 결정하므로 설정 변경만으로 사용하는 DBMS 종류를 변경할 수 있습니다.

라라벨 5는 공식적으로 MySQL, PostgreSQL, SQLite,  MS-SQL Server 4 가지 DBMS만 지원하고 있으며 그외 DB는 커뮤니티에서 작성한 것을 사용해야 합니다.

 


Query builder 와 ORM(Object Relation Mapping)  지원

라라벨은 쿼리 빌더 기능을  제공하고 있으므로 이를 사용하면 SQL 을 사용하지 않고 손쉽게 데이타베이스와 작업을 할 수 있습니다.

 

다음은 고객 테이블에서 특정 이메일 주소를 갖는 고객 정보를 가져온 후에 이메일 인증 여부 필드를 true 로 설정하는 예제입니다.

DB::table('customers')
			->where('email', 'user@example.com')
			->update(['confirmed' => true]);

 

라라벨은 루비온레일스의 Active Record 와 동일한 역할을 수행하는 Eloquent라는 ORM을 통해 PHP 모델 클래스와 데이타베이스의 테이블을 손쉽게 연계할 수 있으며 SQL 구문 없이 데이타간의 다양한 관계를 표현할 수 있으므로 특정 DBMS 에 의존적이지 않으며 DB의 컬럼 추가/수정/삭제등 변경이 발생해도 코드의 수정이 최소화되는 애플리케이션을 작성할 수 있습니다.