2012-01-06 4 views
1

자바를 사용하여 애플리케이션을위한 서비스 레이어를 개발하고 싶습니다. 동시에 서비스 계층도 웹 서비스에 노출 될 수 있습니다.가장 좋은 방법은 자바에서 서비스 레이어를 개발하는 것입니다.

제 아이디어는 데이터베이스 조작을 위해 하나의 일반 추상 클래스를 작성하는 것이며 다른 모든 서비스 클래스는 해당 추상 클래스를 확장하고 해당 추상 클래스 메소드를 통해 DB 조작을 수행하는 것입니다.

이렇게하는 것이 좋습니까? 도와주세요

+0

당신이하고있는 것을 Facade라고합니다. 예 Facade는 좋은 습관입니다. – Acn

+0

귀하의 의견에 감사드립니다. – Dilip

답변

5

데이터베이스에 액세스하기 위해 사용할 항목을 알지 못해서 말하기가 어렵습니다 (JDBC? JPA 최대 절전 모드?). 그러나

  • 서비스 계층과 지속 계층은 동일하지 않습니다. 디커플링과 테스트 용이성을 위해 순수 서비스 레이어와 데이터 액세스 레이어를 선호합니다.
  • 상속은 일반적으로 코드를 재사용하는 최선의 방법은 아닙니다. 잘 디자인 된 API를 사용하고 상속에 대한 위임을 선호합니다.

또한 바퀴를 재발 명하지 마십시오. EJB3, Spring 및 기타 프레임 워크는 서비스를 개발하고이를 웹 서비스로 제공하는 데있어 훌륭한 지원을합니다.

+0

신속한 답장을 보내 주셔서 감사합니다. – Dilip

+0

나는 절전 모드와 봄 모드를 사용하고 있는데, 우리 팀 결정에 따라 별도의 서비스 레이어가 필요하고 컨트롤러에서 DAO 레이어를 직접 사용하고 DB 작업을 수행하려고한다. 그 DAO 레이어의 경우 우리는 내 질문에 말한 것과 같은 Facade Design 패턴을 사용할 것입니다. 그런 다음에는 각 DAO 클래스 메서드를 웹 서버로 노출 할 것입니다. 그렇게하는 것이 좋다? 도와주세요. 미리 감사드립니다. – Dilip

+0

아니요, 좋은 생각이 아닙니다. 원 자성 트랜잭션은 일반적으로 여러 DAO 호출에 걸쳐 있습니다 (예 : 계좌에서 금액을 인출하고 다른 계좌에 대금 청구). 따라서 항상 거래를 구분하기 위해 외관 레이어 (또는 서비스 레이어 : 동일한 이름의 또 다른 이름)를 통과해야합니다. –

1

일상적인 작업에 도움이되는 프레임 워크를 사용해야합니다. 예 : Spring 또는 Java EE. 이러한 프레임 워크는 IoC, 선언적 트랜잭션, 선언적 보안 등과 같은 많은 내장 솔루션을 제공 할 수 있습니다.

관련 문제