데이비드의 모델은 몇 년 전 David Nuescheler에 의해 작성되었지만, 그 아이디어는 오늘 그대로 실현됩니다. David의 모델의 주요 특징은 다음과 같다.
clone()
, merge()
및 update()
용입니다.데이비드의 모델은 https://wiki.apache.org/jackrabbit/DavidsModel의 Jackrabbit wiki에서 찾을 수 있습니다.
모든 것은 데이터베이스와 같은 별도의 제3자 데이터 소스에 의존하지 않고 저장소에 저장해야 합니다. 이는 제작된 컨텐츠, 이미지, 코드, 구성 등의 이진 데이터에 적용됩니다. 이를 통해 하나의 API 세트를 사용하여 모든 컨텐츠를 관리하고 복제를 통해 이 컨텐츠의 프로모션을 관리할 수 있습니다. 또한 백업, 로깅 등의 단일 소스를 얻을 수 있습니다.
새 기능을 만들 때는 항상 JCR 컨텐츠 구조를 먼저 디자인하고 기본 Sling 서블릿을 사용하여 컨텐츠를 읽고 쓰는 방법을 살펴봅니다. 이렇게 하면 구현 방식이 즉시 액세스 제어 메커니즘과 제대로 작동하는지 확인하고 불필요한 CRUD 스타일 서블릿을 생성하지 않아도 됩니다.
서비스는 경로 대신 resourceTypes를 기반으로 정의해야 합니다. 따라서 JCR 액세스 컨트롤을 사용하고, REST 원칙을 준수하고, 요청에 제공된 리소스 및 리소스 해결 프로그램을 사용할 수 있습니다. 또한 보안 강화를 위해 클라이언트에서 서버측 구현 세부 정보를 숨겨 클라이언트측에서 URL을 변경하지 않고도 서버 측에서 URL을 렌더링하는 스크립트를 변경할 수 있습니다.
노드 유형은 인프라 레이어에서 낮은 수준에서 작동하며, nt:unstructured, oak:Unstructured, sling:Folder 또는 cq:Page 노드 유형에 할당된 sling:resourceType을 사용하여 대부분의 요구 사항을 충족할 수 있습니다. 노드 유형은 저장소의 스키마와 동일하며 노드 유형을 변경하는 데는 비용이 많이 들 수 있습니다.
이름 지정 규칙을 준수하면 코드 베이스에 일관성이 추가되고 결함 발생률이 낮아지고 시스템에서 작업하는 개발자의 속도가 향상됩니다. AEM 개발 시 Adobe에서 다음 규칙을 사용합니다.
노드 이름
속성 이름
구성 요소(JSP/HTML)