2010-11-13 38 views
15

im sử dụng spring + hibernate cho ứng dụng dành cho máy tính để bàn.Trường hợp và cách xử lý các trường hợp ngoại lệ mùa xuân + hibernate?

Tôi đang cố gắng để xây dựng nó với một thực hiện lớp, vì vậy tôi có:

GUI lớp --call -> lớp Service --call - lớp> DAO

Một nhỏ ví dụ để exaplain tốt hơn tình hình của tôi:

// In GUI layer 
private void actionPerformed(ActionEvent evt){ 
    addUser(); 
} 

private void addUser(){ 
    // Check gui validation for user inputs 
    if(inputIsValid()){ 
     String username=nameText.getText(); 
     String pass=passText.getText(); 
     //Now call service layer 
     userService.createUser(username, pass); 
     // Now here i want to show a message to user like 
     // "Operation successful" or "Operation failed" 
     // or more sofisticated message like "User with same name already exists" 
    } 
} 


// Service layer 
@Transactional 
public void createUser(String name, String pass){ 
    User user=new User(name, pass); 
    userDao.save(user); 
} 

// Another service layer example, 
@Transactional 
public boolean createUser(String name, String pass){ 
    User user=new User(name, pass); 
    try{ 
     userDao.save(user); 
    } 
    catch(Exception ex){ 
     Log(ex); 
     return false; 
    } 
    return true; 
    // In this case GUI layer can know if save is succesful, but it can't know WHY 
    // the save is failed : some username? DB service shutdown? etc.. 
} 

Vấn đề là: ai ném ngoại lệ và xử lý nó?

Tôi nghĩ DAO phải ném ngoại lệ đầu tiên và lớp dịch vụ truy cập lại nó, và cuối cùng là lớp giao diện xử lý ngoại lệ, vì vậy tôi có thể hiển thị thông báo cho người dùng, điều này có tốt không? Có một cách để xây dựng một số ExceptionHandler bằng cách sử dụng mùa xuân?

Cách tốt nhất để quản lý ngoại lệ bằng spring + hibernate là gì?

Cảm ơn.

Trả lời

3

Nếu bạn đang sử dụng Spring MVC, sau đó có một giải pháp của văn bản ExcpetionHandlerResolver, mất ít giao diện trên documentation

Nếu bạn không làm việc với Spring MVC. tôi sẽ đề nghị ném ngoại lệ từ DAO để dịch vụ và sau đó để xem lớp. Chỉ có lớp xem thực sự mới có thể cung cấp thông tin có giá trị cho người dùng dựa trên ngoại lệ bị bắt.

4

Tôi sẽ đề xuất gói các ngoại lệ được ném vào lớp ngoại lệ của riêng bạn và để chúng bong bóng lên lớp GUI.

Các vấn đề liên quan