2010-11-13 12 views
15

डेस्कटॉप एप्लिकेशन के लिए वसंत + हाइबरनेट का उपयोग कर रहा हूं।वसंत + हाइबरनेट अपवादों को कहां और कैसे संभालते हैं?

मैं एक स्तरित कार्यान्वयन के साथ इसे बनाने की मेरे पास है कोशिश कर रहा हूँ, इसलिए:

जीयूआई परत --call -> सेवा परत --call -> डीएओ परत

एक छोटा सा उदाहरण के लिए मेरी स्थिति को बेहतर तरीके से अपनाने के लिए उदाहरण:

// 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.. 
} 

समस्या यह है: कौन अपवाद फेंकता है और इसे संभालता है?

मुझे लगता है कि डीएओ को पहले अपवाद को फेंकना है, और सेवा परत इसे फिर से उतारना है, और अंत में जीयूआई परत संभाल अपवाद है, इसलिए मैं उपयोगकर्ता को संदेश दिखा सकता हूं, क्या यह अच्छा है? बसंत का उपयोग कर कुछ अपवाद हैंडलर बनाने का एक तरीका है?

वसंत + हाइबरनेट का उपयोग करके अपवादों का प्रबंधन करने का सबसे अच्छा अभ्यास क्या है?

धन्यवाद।

उत्तर

3

आप वसंत MVC का उपयोग कर रहे हैं, तो ExcpetionHandlerResolver लेखन का एक समाधान है, documentation

पर नज़र में ले आप वसंत MVC के साथ काम नहीं कर रहे हैं। मैं सलाह देता हूं कि डीएओ से सेवा में अपवाद फेंक दें और फिर परत देखें। केवल दृश्य परत उपयोगकर्ता को अपवाद के आधार पर मूल्यवान जानकारी प्रदान कर सकती है।

4

मैं सुझाव देता हूं कि आप अपने अपवाद वर्ग में फेंकने वाले अपवादों को लपेटें और उन्हें जीयूआई परत तक बुलबुला दें।

संबंधित मुद्दे