Уровень обслуживания в приложении Java SwingJAVA

Программисты JAVA общаются здесь
Anonymous
Уровень обслуживания в приложении Java Swing

Сообщение Anonymous »

Я думаю, действительно ли мне нужен уровень обслуживания.

Я использую Spring + Hibernate для настольного приложения Swing, и в данный момент у меня есть gui/ Уровень качания->уровень обслуживания->уровень дао. Я использую Spring только для поддержки @Transactional и IOC-инъекций

Лучшая практика гласит, что мне нужно написать сервис для использования моего daos и поместить все управление транзакциями в service.

Но я понимаю, что очень часто уровень обслуживания только копирует методы dao, например:

Код: Выделить всё

// a DAO example
@Repository
public class CustomerHibernateDAO extends BaseHibernateDAO implements CustomerDAO {

public List findAllCustomerILikeName(String name){
return getSession()
.createCriteria(Customer.class)
.add(Restriction.ilike("name", name))
.list();
}
}

// Customer service to use this dao...
@Service
@Transactional
public class CustomerService {

@Autowired
CustomerDAO customerDAO;

// Why i can't call DAO instead the service?
public List getAllCustomersByName(String name){
return customerDAO.findAllCustomerILikeName(name);
}

}
Это мое типичное использование сервисного уровня... Hibernate не зависит от базы данных, Spring не зависит от технологий: так мне это действительно нужно?

А как насчет уникального класса обслуживания для управления всеми DAO?? Я думаю, что это может быть хорошим компромиссом или плохой практикой?

Я знаю, что использование @Transactional в DAO — плохой способ, но в данный момент мне приходится писать сервисы только для размещения на нем @Transactional...

РЕДАКТИРОВАТЬ

Дополнительная информация о моем приложении.

Мое приложение представляет собой программное обеспечение для управления регистрацией пользователей, продуктами, заказами и другими подобными вещами.
На практике оно содержит множество операций чтения объекта->редактировать->сохранения объекта или создания->редактирования->сохранения, и благодаря спящему режиму эти операции большую часть времени управляются ОДНИМ dao, потому что спящий режим с коллекцией @manyto... и каскадом .save_update позволяет сохранять два или более объекта в одной операции сохранения.

Так, например, в моих элементах JFrame, где я могу вставлять, редактировать или создавать элемент ( товар на продажу) есть:

Код: Выделить всё

public ItemFrame(){
// the constructor
itemService=springAppContext.getBeans(ItemService.class);
}

public boolean validateForm(){
// test if the gui is correctly filled by user
}

public boolean save(){
// create an Item entity taking value from swing gui(JTextField etc)
Item item=new Item();
item.setName(nameTextField.getText());
item.setEtc...
// ItemService ' save method is a wrap around itemDao.save(item)...
itemService.save(item);
}

private void saveItemActionPerformed(ActionEvent evt){
// When i press SAVE button
if(validateForm()){
save();
}
}
Это то, что у меня происходит в большинстве случаев, поэтому я думаю, что попал в антипаттерн анемичного домена...

Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/427 ... pplication

Вернуться в «JAVA»