비즈니스 레이어
서비스 레이어: 해당 Dao 데이터베이스 작업을 참조하여 필요한 코드(예: 간단한 판단)를 작성할 수 있습니다.
서비스 계층은 다양한 다오 비즈니스 작업을 호출합니다. 예를 들어 비즈니스가 있는 경우 이를 추가하고 수정합니다. 그런 다음 서비스 계층의 일부 데이터 변환 및 논리적 판단을 포함하여 각각 dao의 추가 및 수정 작업을 호출하며 dao는 단순한 추가, 삭제, 수정 및 쿼리일 뿐입니다. 그리고 거래는 일반적으로 서비스 계층에 배치됩니다.
Service 레이어와 DAO 레이어는 모두 데이터베이스에서 작동할 수 있습니다. 구체적인 차이점은 다음과 같습니다.
dao는 서비스에 해당합니다.
일반적으로 Hibernate DAO는 하나의 POJO 객체만 작동하므로 하나의 DAO는 하나의 POJO 객체에 해당합니다. 서비스 계층은 여러 POJO 개체(즉, 여러 테이블에 대한 데이터 작업)를 처리할 때 트랜잭션 관리(선언적 트랜잭션 관리)를 위한 것입니다. 서비스 계층(해당 인터페이스의 구현 클래스)에는 데이터 작업을 완료하기 위해 여러 DAO 개체가 주입됩니다.
서비스 유무
이 점에 대한 내 의견은 정확하지 않을 수 있습니다. 비즈니스 계층 구축에는 두 가지 모드가 있다고 생각합니다.
모드 1은 서비스 + DAO, 즉 CRUD와 유사한 간단한 작업이 DAO에서 수행됩니다. 작업(비즈니스 로직을 포함하지 않는 기능 포인트라고 함)은 DAO에서 하나 이상의 기능 포인트를 호출하여 비즈니스 로직으로 결합됩니다. 서비스 수는 기능 모듈에 따라 결정됩니다.
이 모델에서는 비즈니스 로직이 서비스에 배치되고 트랜잭션의 경계도 서비스에서 제어되어야 합니다. 물론 서비스에서 직접 트랜잭션을 제어하면 비비즈니스 로직 코드가 도입되므로 Spring의 AOP가 이 문제를 해결할 수 있습니다.
단점을 말하자면 일부 객체에 대한 작업이 단순 CRUD이고 서비스 레이어가 번거로워 보인다는 점입니다.
모드 2는 Service + BO, BO입니다. = DAO + 비즈니스 메소드, 원본 DAO를 기반으로 비즈니스 메소드를 추가하여 BO 객체를 형성합니다. BO의 비즈니스 메서드는 종종 하나의 엔터티 개체를 대상으로 한다는 점에 유의해야 합니다. 여러 엔터티 개체를 포괄해야 하는 경우 해당 메서드를 서비스에 배치해야 합니다.
예를 들어
간단한 은행 계좌 관리 시스템은 비밀번호 변경, 출금 등의 비즈니스 메소드를 가질 수 있는 계좌 BO 객체를 생성합니다. 단일 계정 개체). 이제 서비스에 배치해야 하는 전송 방법을 추가해야 합니다.
여기서 Service와 BO는 어떤 관계인가요? 또 다른 예:
국가 행정 기관을 예로 들어 보겠습니다. 곡물국은 곡물 수집, 종자 판매 등을 담당하고 건설부는 토지 매매 승인, 도로 건설 등을 담당합니다. 행정 부서 내의 문제. 갑자기 특정 장소에 홍수가 발생했습니다. 재해 구호 기간 동안 곡물 관리국에서 곡물을 방출하기 위해 창고를 열어야 하는데, 건설부는 어떻게 두 부서를 조정할 수 있을까요? 두 부분의 자원을 배분할 특별재난구조위원회를 설립할 필요가 있다. 여기서 두 부분은 BO이고, 재난구조위원회는 봉사입니다. 제 뜻이 정확하게 표현되었는지 모르겠네요, 하하. 모드 1은 서비스와 DAO를 구분할 때 경계가 명확하지만 불필요한 코드가 일부 포함됩니다. 모드 2의 분할은 상대적으로 복잡하지만 코딩 효율성을 향상시킬 수 있습니다.
물론 소규모 애플리케이션에서는 서비스 없이 DAO나 BO를 사용해도 괜찮습니다.
서비스와 DAO 사이에 인터페이스가 있는지 여부
인터페이스는 여러 구현을 가질 수 있는 계약입니다. 따라서 인터페이스의 유무는 구체적인 구현을 다양화해야 하는지 여부에 따라 달라집니다. DAO 또는 서비스의 구현이 하나만 있다고 판단되면 인터페이스를 추상화하는 것은 거의 의미가 없습니다. 그러나 일부 대규모 애플리케이션에는 DAO 및 서비스의 여러 구현이 필요할 수 있습니다(예: 특정 구현 클래스를 숨기기 위해 Hibernate 구현, CMP 구현 및 JDO 구현이 필요할 수 있는 위 예의 계정 DAO). 상위 레벨에서는 인터페이스 사용이 필요합니다.
특정 구현 클래스의 생성 프로세스를 숨깁니다. 두 가지 방법이 있습니다. 하나는 대량의 코드를 사용하는 실용적인 팩토리 방법입니다(DAO 및 서비스당 하나의 팩토리). 두 번째는 Spring의 IoC를 사용하여 추가 코드를 작성하지 않고 종속성 주입을 구현하는 것입니다. 이는 Spring을 도입하는 두 번째 이유이기도 합니다.
위 내용은 Javaweb 비즈니스 레이어를 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!