RESTful API를 개발 중이며 DAO를 리소스에 사용하는 것이 편리하다고 생각합니다. 메모리를 사용하여 저장하려고 계획하고 있지만 사용하기로 결정한 경우 내 라이브러리를 사용하는 사람에게 문을 닫고 싶지 않기 때문에 DAO를위한 데이터베이스 구현.
내 질문은 DAO가 싱글 톤이어야하는지 아닌지입니다. 그렇지 않은 경우 서비스에 DAO 인스턴스가 있으며 대략 다음과 같습니다.
@Path("eventscheduler")
public class EventSchedulerService {
private IEventSchedulerDao dao = new EventSchedulerDao();
// in case a different implementation is to be used
public void setEventSchedulerDao(IEventSchedulerDao dao) {
this.dao = dao;
}
@Path("{uniqueName}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Tournament getTournament(@PathParam("name") String uniqueName) {
return dao.get(uniqueName);
}
@Path("create")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Tournament createTournament(Tournament tournament) {
return dao.create(tournament);
}
}
DAO가 싱글 톤이라면 첫 번째 줄에 큰 차이는 없을 것입니다.
private IEventSchedulerDao dao = EventSchedulerDao.getInstance();
나는 여전히 IEventSchedulerDao
인스턴스 를 사용해야 하지만 모든 싱글 톤이 이와 같이 작동 한다고 생각합니까? 어떤 이유로 나는 항상 싱글 톤을 정적 메소드와 상관 관계가 있으므로 사용자에게 싱글 톤 인스턴스를 표시하는 대신 getInstance()
숨겨져 EventSchedulerDao.get(name)
서 정적 방식으로 등을 사용 합니다. 이거 아니면 나인가요?
그렇다면 싱글 톤 DAO가 있어야합니까?
그리고 부수적 인 질문으로, 사용자가 자신의 DAO를 구현할 수 있도록 문을 여는 것이 괜찮습니까?