문제

데이터베이스의 각 테이블에 대해 별도의 클래스가있는 데이터 액세스 계층이 있습니다. 각 클래스는 테이블에서 행을 참조하는 객체를 만들고 기능을 작성, 업데이트, 삭제 및 가져 오는 기능을합니다. 그들은 모두 dbobj 클래스를 연장합니다. 내 질문은 쿼리를 작성하고 싶다고 말합니다. SELECT * FROM table, 그리고 그것을 함수에 가지고 있습니다. 이것을 넣을 수있는 가장 좋은 곳은 어디입니까? 비즈니스 계층 또는 그룹에서 해당 데이터 계층 클래스의 모든 관련 기능은? MySQL을 사용하여 중요한 경우 PHP에 있습니다.

도움이 되었습니까?

해결책

데이터 계층에 SQL 쿼리를 넣으십시오.

쿼리와 같은 SELECT * FROM table, 모델 자체의 클래스 방법 또는 모델 관리자 객체의 메소드를 만들 든 스타일의 문제입니다.

그러나 비즈니스 로직은 데이터베이스 스키마의 임의의 세부 사항에서 추상화되어야합니다. 비즈니스 계층은 해당 데이터를 얻는 데 사용될 특정 쿼리를 신경 쓰지 않고 모델의 모든 인스턴스에 대해 데이터 계층을 요청할 수 있어야합니다.

다른 팁

방금 당신의 질문을 찾았고 또 다른 관점을 가져 오는 것에 대해 생각했습니다. 대부분의 응용 프로그램에서 (모든 말을하지는 않지만, 그에 가깝습니다) 대부분의 경우 ORM 프레임 워크로 정의됩니다.

그러나 DAL (Data Access Layer)은 아키텍처 접근 방식에 따라 도메인 계층 또는 비즈니스 로직 계층과 혼동해서는 안됩니다. 이 주제에 대해 더 깊이 들어가고 싶다면 모든 개발자가 필요하다고 생각합니다. 마틴 파울러의 기사, 또한 읽을 수 있습니다 이것 블로그 게시물은 얼마 전에 M. Fowler만큼 중요하지는 않았지만 그 문제에 대해 약간의 반영을했습니다.

안부, 다윗

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top