मेरे पास 2 इकाइयां हैं - फिल्म और अभिनेता - जिनमें एम: एन रिश्ते हैं। इन संस्थाओं के लिए डीटीओ वस्तुओं को डिजाइन करते समय मुझे यकीन नहीं है कि जाने का सही तरीका क्या है।एम के साथ इकाइयों के डेटा ट्रांसफर ऑब्जेक्ट्स एम: एन या 1: एन रिलेशनशिप
मूवी
@Entity
@Table(name = "Movies")
public class Movie extends AbstractBusinessObject {
private String name;
private String short_info;
@ManyToMany
private Map<String, Actor> cast;
}
अभिनेता
@Entity
@Table(name = "Actors")
public class Actor extends Person{
private String name;
@ManyToMany(mappedBy = "cast")
private Set<Movie> movies;
}
अब DTOs के विषय में: एम एन और: मैं 1 से निपटने के लिए कैसे दो अलग अलग तरीकों का सामना करना पड़ा एन रिश्तों ।
सहेजा जा रहा है केवल आईडी:
public class MovieDto {
private String name;
private String short_info;
// Long represents Actor's ID
private Map<String, Long> cast;
}
हालांकि के रूप में कहा here मुझे लगता है कि Instead of performing many remote calls on EJBs, the idea was to encapsulate data in a value object
सोचा, और इस दृष्टिकोण स्पष्ट रूप से नियम को तोड़ता।
डीटीओ में बचत डीटीओ: एक और तरीका अभिनेता के डीटीओ को अपने आईडी के बजाय स्टोर करना होगा।
public class MovieDto {
private String name;
private String short_info;
private Map<String, ActorDto> cast;
}
मुझे ऐसा लगता है कि इस दृष्टिकोण, तेजी से किया जाएगा के रूप में मैं डेटाबेस हर मैं उदाहरण के लिए अभिनेता का नाम दिखाने की जरूरत है कॉल करने के लिए नहीं है।
क्या यह धारणा सही है, या यह केवल आईडी (दूसरे दृष्टिकोण की अंतरिक्ष खपत पर विचार करने) को स्टोर करना बेहतर होगा?
प्लस दूसरे दृष्टिकोण के परिणामस्वरूप एक इकाई के लिए कई डीटीओ होंगे। मिसाल के तौर पर, मुझे यह जानने की ज़रूरत नहीं है कि "मूवी पेज" को देखते समय अभिनेता ने कौन सी फिल्में खेली हैं, लेकिन मुझे "अभिनेता पेज" देखने पर इसकी ज़रूरत है।
क्या आपको वास्तव में डीटीओ की आवश्यकता है? वे अक्सर डुप्लिकेट कोड होते हैं। आप एक इकाई वापस कर सकते हैं, जिसमें केवल आईडी फ़ील्ड सेट है –