मैं परियोजना है कि डीटीओ वस्तुओं में डेटाबेस संस्थाओं धर्मान्तरित पर काम कर रहा हूँ। ऐसा करने के लिए प्रत्येक कनवर्टर के लिए एक विशेष कनवर्टर क्लास का उपयोग किया जाता है।फ्रेमवर्क वस्तुओं
मैं उन चीजों का सरलीकृत उदाहरण प्रदान कर रहा हूं जो हम कर रहे हैं। मैं जानबूझकर कोड स्पष्टता के लिए सेटर्स/गेटर्स और कुछ अन्य चीजों को याद करता हूं।
class Car {
String number;
Driver driver;
}
class Driver {
String name;
License license;
}
class License {
String serial;
Date expired;
}
और यह सोचते हैं कि हम डीटीओ वस्तु निम्नलिखित की जरूरत है:
class DriverDTOConverter {
DriverDTO convert(Car car) {
DriverDTO driverDto = new DriverDTO();
driverDto.carNumber = car.number;
driverDto.name = car.driver.name;
driverDto.licenseSerial = car.driver.license.serial;
return driverDto;
}
}
:
class DriverDTO {
String name;
String carNumber;
String licenseSerial;
}
हम कनवर्टर वर्ग के अनुसार तैयार करते
तो यहाँ लगातार संस्थाएं हैं
और थोड़ा और अधिक जटिल उदाहरण:
class CarDTO {
String number;
String driverName;
LicenseDTO driverLicense;
}
class LicenseDTO {
String serial;
}
class CarDTOConverter {
CarDTO convert(Car car) {
CarDTO carDto = new CarDTO();
carDto.number = car.number;
carDto.driverName = car.driver.name;
LicenseDtoConverter c = new LicenseDtoConverter();
carDto.driverLicense = c.convert(car.driver.license);
return carDto;
}
}
class LicenseDtoConverter {
LicenseDTO convert(License license) {
LicenseDTO licenseDto = new LicenseDTO();
licenseDto.serial = license.serial;
return licenseDto;
}
}
यह बहुत समय लगता है, इसलिए मुझे आश्चर्य है कि अगर कोई ढांचा है जिसके कि काम के लिए responsbility ले सकता है। और मुझे केवल इसे संपत्ति फ़ाइलों या एनोटेशन के साथ कॉन्फ़िगर करने की आवश्यकता होगी।
Smth कि
तो संपत्ति फ़ाइल द्वारा किए गए की तरह:
DriverDto <--> Car {
carNumber = number;
name = driver.name;
licenseSerial = driver.license.serial;
}
CarDTO <--> Car {
number = number;
driverName = driver.name;
driverLicense = driver.license;
}
LicenseDTO <--> License {
license = license;
}
या संभव एनोटेट इकाई
@Converted(Car.class)
class DriverDTO {
@Associated("driver.name")
String name;
@Associated("number")
String carNumber;
@Associated("driver.license.serial")
String licenseSerial;
}
महत्वपूर्ण आवश्यकता के उदाहरण है कि यह किसी भी प्रतिबिंब का उपयोग नहीं करना चाहिए। सभी एनोटेशन या संपत्ति फ़ाइलें संकलन या precompile मंच और बाईटकोड या स्रोत कोड उत्पन्न किया जाना चाहिए पर संकलित किया जाना चाहिए।
मैं अगर किसी को भी मुझे इस तरह के एक ढांचे को इंगित कर सकते हैं बहुत खुशी होगी। यदि यह अभी भी विकासशील है तो मैं इसके निर्माण में खुशी से भाग लेगा।
Thx मैं इस पर एक पहले देखो ले लिया है। यह वही चीज है जो मैं चाहता था अगर हम इस बात पर विचार न करें कि यह प्रतिबिंब का उपयोग करता है। वैसे भी मैं जवाब को सही के रूप में चिह्नित करता हूं। यदि कोई और अधिक शक्तिशाली ढांचे का सुझाव दे सकता है तो मैं खुश रहूंगा और अपना "सही" उत्तर विकल्प बदल दूंगा। – Zalivaka
डोजर से परिचित हो लें दौरान मैं लिंक http://stackoverflow.com/questions/1432764/any-tool-for-java-object-to-object-mapping निम्नलिखित के साथ प्रस्तावित किया गया था। यह किसी ऐसे व्यक्ति के लिए सहायक हो सकता है जो उस प्रश्न में रूचि रखता है। – Zalivaka