YII 프레임워크 분석 노트 4:ar모델과db
A모델 프레임워크의 모델은 CModel 하위 클래스이고 CModel은 주로 검증과 오류 처리를 하고 교체기와 그룹 접근 인터페이스를 실현한다. 활동 기록 모델인 CActive Record는 AR 모델의 기본 클래스이다.모든 AR 클래스는 하나의 단독 데이터 테이블을 대표하고, 하나의 AR 실례는 그 테이블의 한 줄을 대표한다.AR은 데이터의 지속성을 책임지는 ORM(Object Relation Mapping) 설계 모델입니다.데이터베이스 CURD 작업을 캡슐화하는 동시에 영역 모델(Domain Model)으로 일부 비즈니스 논리를 캡슐화합니다.테이블 구조(Table Schema), 구속조건 및 CURD가 포함된 AR 클래스
실례화 모델은 두 가지 방법이 있는데 바로 new의 새로운 실례를 사용하거나 정적 방법 mode()를 사용한다. 후자와 전자의 차이는 구조 함수가 실행하는 코드(주로 원 데이터의 여러 번 가져오는 것을 피한다)를 생략하고 정적 방법 mode()로 AR 대상을 만드는 절차를 거친다.
//$model::model($class)
$model=self::$_models[$className]=new $className(null);// mode
new CActiveRecordMetaData($model)//
//1、
$model->getDbConnection() //
->getSchema()// schema
->getTable($tableName)// shema
->loadTable()//
->findColumns()//
->findConstraints()// ( )
//2、
//3、 ( BELONGS_TO、HAS_ONE、HAS_MANY、MANY_MANY、STAT)
$model->attachBehaviors($model->behaviors());//
위 절차에서 문제가 발생할 수 있습니다. 모델을 만들 때마다'SHOW COLUMNS FROM $tableName'과'SHOW CREATE TABLE $tableName'의 검색을 실행하는데 높은 성능과 성능에 영향을 줄 수 있습니다.주 설정 파일의 데이터베이스 설정에 schemaCaching Duration과 schemaCacheID의 설정을 추가하여 데이터베이스 schema를 캐시할 수 있습니다. 전자는 캐시를 설정하는 시간이고 후자는 캐시 구성 요소의 id입니다. 그러나 캐시가 가져오는 문제는 데이터베이스 테이블 구조를 수정하는 것이 즉각 효력이 발생하지 않기 때문에 생산 환경에서 캐시를 새로 고치는 스크립트를 쓰는 것이 필요합니다.AO ar모델이 가져온 장점은 개발 중인 SQL 문장의 작성을 최소화하는 것이다. AR모델은 데이터베이스 기록의 상태와 데이터베이스에 대한 접근 방법을 봉인할 뿐만 아니라 업무 논리도 봉인한다. 이것은 관계가 복잡하지 않은 응용에서 가져오는 장점이 뚜렷하다. 그러나 데이터베이스 관계가 복잡하고 업무 논리가 복잡하면 데이터에 대한 조작을 단독으로 제기할 필요가 있다.YII의 DAO는 업무 논리와 데이터 교환을 분리하고 업무와 데이터베이스의 결합성을 낮춘다.YII에서 DAO는 PDO를 기반으로 하여 통일된 인터페이스로 서로 다른 데이터베이스 관리 시스템에 접근할 수 있다.프레임워크에서 CDbConnection, CDbCommand, CdbDataReader, CDbTransaction 클래스는 각각 데이터 양의 연결, 명령, 읽기와 업무를 관리한다.
YII는 데이터베이스에 대한 schema를 비추기도 한다. 하나의 데이터베이스는 하나의 대상이고 하나의 표는 하나의 대상이며 한 열은 하나의 대상에 대응한다. 이런 대상은 각각 그에 대응하는 schema의 일부 조작을 봉인한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring에서 DAO가 순환 호출될 때 데이터가 실시간으로 업데이트되지 않는 해결 방법문제를 설명하기 전에 몇 가지 전제 사항을 설명하십시오. Spring의 구성 파일에서 다음과 같은 방식으로 데이터베이스 트랜잭션을 구성했다고 가정하십시오. 현재 UserDao 및 Security Service가 있습...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.