我正在使用Struts2,Hibernate和Spring來管理sessionFactory的生命週期的中型應用程序。我的問題是,我應該創建一個能夠爲我的整個應用程序提供所有服務的大服務類嗎?或者應該爲每個模型創建一個服務類?構建休眠的服務層
比方說,我有這樣的一個大的服務類
@Transactional
public class Services {
// So Spring can inject the session factory
SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory value) {
sessionFactory = value;
}
// Shortcut for sessionFactory.getCurrentSession()
public Session sess() {
return sessionFactory.getCurrentSession();
}
public Event getEventById(long id) {
return (Event) sess().load(Event.class, id);
}
public Person getPersonById(long id) {
return (Person) sess().load(Person.class, id);
}
public void deleteEventById(long id) {
sess().delete(getEventById(id));
}
public void deletePersonById(long id) {
sess().delete(getPersonById(id));
}
public void createEvent(String name) {
Event theEvent = new Event();
theEvent.setName(name);
sess().save(theEvent);
}
public void createPerson(String name) {
Person p = new Person();
p.setName(name);
sess().save(p);
}
@SuppressWarnings("unchecked")
public List<Event> getEvents() {
return sess().createQuery("from Event").list();
}
@SuppressWarnings("unchecked")
public List<Person> getPeople() {
return sess().createQuery("from Person").list();
}
public void removePersonFromEvent(int personId, int eventId) {
getEventById(eventId).getPeople().remove(getPersonById(personId));
}
public void addPersonToEvent(int personId, int eventId) {
getEventById(eventId).getPeople().add(getPersonById(personId));
}
.....Some more services methods here
}
什麼是我們的最佳方法呢?整個應用程序的一個大服務類?或每個型號有不同的服務等級?
我的建議是遵循REST,具有一個'PersonService'和'EventService'以及一組最小的CRUD方法。 – Asaf
一個具體的例子會很好。 – KyelJmD
查看'UserService' [here](http://krams915.blogspot.co.il/2012/01/spring-mvc-31-implement-crud-with_7897.html),例如 – Asaf