हम प्रस्तुति परत से डेटा भेजने के लिए डीटीओ का उपयोग करना चाहते हैं। हम जैसे परतें होती हैं:डीटीओ से डीटीओ को डीटीओ
- मुखौटा
- appService
- डोमेन
और हम डोजर का उपयोग हमें डीटीओ को इकाई रूपांतरित करने में सहायक है। लेकिन मैं अब 2 सवाल है:
-
डीटीओ हम डोजर उपयोग कर सकते हैं करने के लिए संस्था से
- , लेकिन संस्था के लिए डीटीओ से हम डोजर उपयोग कर सकते हैं? यदि हां, कैसे?
- जहां मैं इकाई बनाता हूं? मुखौटा या डीटीओएस्सेबलर में?
उदाहरण के लिए, मुझे एक पुस्तक पंजीकृत करनी है। पुस्तक इकाई देखो की तरह:
Book{
public Book(BookNumber number,String name){
//make sure every book has a business number,
//and the number can't change once the book is created.
this.bookNumber = number;
..
}
}
और हम एक DTOAssembler हवलदार:
BookDTOAssembler{
BookDTO toDAO(bookEntity){
...
}
BookEntiy fromDTO(book DTO,BookRepository bookRepository){
//1.Where should i create book entity?
//2.Is there any effective way to convert dto to entity in java world?
}
}
विकल्प 1
the BookManagedFacade has a registerBook function:
public registerBook(bookDTO){
Book book = BookDTOAssembler.fromDTO(book DTO);
}
//Create book in BookDTOAssembler.fromDTO
public static BookEntiy fromDTO(BookDTO bookDTO,BookRepository bookRepository){
//book is never registered
if (0==bookDTO.getBookID()){
Book book = new Book(bookRepository.generateNextBookNumber(),bookDTO.getName());
}else{
//book is been registed so we get it from Repository
book = bookRepository.findById(bookDTO.getBookID());
}
book.setAuthor(bookDTO.getAuthor);
...
return book;
}
विकल्प 2
the BookManagedFacade has a registerBook function:
public registerBook(bookDTO){
Book book = new Book(bookRepository.generateNextBookNumber(),bookDTO.getName());
book = BookDTOAssembler.fromDTO(book DTO,book);
}
//add another function in BookDTOAssembler.fromDTO
public static BookEntiy fromDTO(BookDTO bookDTO,Book book){
book.setAuthor(bookDTO.getAuthor);
...
return book;
}
एक के साथ बेहतर है? या इसे बेहतर तरीके से कार्यान्वित किया जा सकता है ..?
सचमुच, मैं डोज़र से दूर रहूंगा। हम इसे अपने वर्तमान प्रोजेक्ट में उपयोग कर रहे हैं, और मुझे इससे नफरत है: यह आपको कुछ चीजों को मैन्युअल रूप से करने के लिए मजबूर करता है, या सेटर्स को जोड़कर अपनी ऑब्जेक्ट्स के encapsulation को पूरी तरह से तोड़ने के लिए मजबूर करता है जो वहां नहीं होना चाहिए। और वैसे भी कुछ संचालन इसके बिना किया जाना चाहिए। और सबसे बड़ी समस्या: यदि आप किसी संपत्ति का नाम बदलने के लिए होते हैं, तो सबकुछ ठीक से संकलित होगा, लेकिन केवल रनटाइम पर गलत परिणाम देगा। संस्थाओं में डीटीओ को बदलना और इसके विपरीत, कठिन है, बीटी यह आसान है। इसे मैन्युअल रूप से करने से यह सुनिश्चित हो जाता है कि encapsulation संरक्षित है, और refactoring की अनुमति देता है। –
यह सच है! अगर कुछ भी बदल जाता है, तो यह रनटाइम पर पाया जा सकता है! मेरे प्रश्न 2 के बारे में आपकी सलाह क्या है? – tobato
मुझे एक ऐसी विधि पसंद है जो सिर्फ एक बुकडीटीओ से एक पुस्तक में प्रतिलिपि बनाता है, और यह परवाह नहीं करता कि पुस्तक कहां से आती है। –