정말 서비스 레이어가 필요하다고 생각하고 있습니다.자바 스윙 애플리케이션 서비스 레이어
저는 데스크탑 스윙 응용 프로그램을 위해 스프링 + 최대 절전 모드를 사용하고 있으며 현재이 모드에서는 GUI/스윙 레이어 -> 서비스 레이어 -> DAO 레이어가 있습니다. @Transactional support와 IOC-injection에만 봄을 사용한다.
모범 사례는 내 daos를 사용하는 서비스를 작성하고 모든 트랜잭션 관리를 서비스에 넣어야한다고 말한다.
하지만 난 아주 자주, 서비스 계층은 예를 들어, 그래서 DAO 방법을 복제 실현하고 있습니다 :
// a DAO example
@Repository
public class CustomerHibernateDAO extends BaseHibernateDAO implements CustomerDAO {
public List<Customer> 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<Customer> getAllCustomersByName(String name){
return customerDAO.findAllCustomerILikeName(name);
}
}
이 서비스 층의 내 tipical 사용됩니다 ... Hibernate는 DB-불가지론 봄은 기술에 불가 지하다 : 그래서, 정말 필요합니까?
모든 DAO를 관리하는 고유 한 서비스 클래스는 무엇입니까 ?? 나는 이것이 좋은 타협이 될 수 있다고 생각하거나, 나쁜 습관입니까? 내가 DAO에 @Transactional을 넣어 알고
나쁜 방법이지만, 지금이 순간에 나는
편집 ... 만에 @Transactional을 넣어 약
더 많은 정보를 정기적으로 서비스를 작성해야 내 앱.
내 응용 프로그램은 관리 소프트웨어이며 사용자 등록, 제품, 주문 및 기타 항목을 관리합니다. 실제로 엔티티 -> 편집 -> 엔티티 저장 또는 작성 -> 편집 -> 저장 조작이 많이 포함되어 있으며, 최대 절전 모드로 인해 이러한 조작은 @manyto로 최대 절전 모드로 전환되므로 대부분 한 번에 의해 관리됩니다 ... collection과 cascade.save_update는 둘 이상의 엔티티를 동일한 지속 조작에 저장하도록 허용합니다. ,
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();
}
}
이 난 케이스의 대부분에있는 것입니다 : 내가 삽입, 편집 또는 항목을 만들 수있는
그래서, 예를 들어, 내 항목에 있습니다 (제품이 판매하는) JFrame의 그래서 나는 빈혈에 빠졌다고 생각합니다. 반 패턴 ...
고마워요.
에 사용되는 후자를 허용 고려 correctly.Services entity.It 줘야 당이 있어야한다 나는 표준 패턴을 유지합니다. + DB가 변경되면 DAO 레이어를 다시 빌드합니다. + 1 btw –
DB가 변경되면 서비스가 사용되지 않고 어떤 문제가 발생합니까? 나는 단지 DAO를 재건 할 것이고 모두 괜찮을 것이다. 그렇지 않은가? – blow
여기서 주제를 조금 벗어나고 있습니다 만, ItemFrame 생성자에서 직접 콩을 컨테이너에서 가져 오는 이유는 무엇입니까? 컨테이너에서 주입 된 bean을 가져 오는 것보다이 접근법의 이점을 알 수는 없습니다. – prasopes