Q1।: क्या का उपयोग करजेपीए @TableGenerator का उपयोग कर अनुक्रम आईडी के बीच क्या अंतर है, @GeneratedValue बनाम डेटाबेस Auto_Increment
ए
CREATE TABLE Person
(
id long NOT NULL AUTO_INCREMENT
...
PRIMARY KEY (id)
)
बनाम
बी एक डेटाबेस में लागू करने के अनुक्रम क्रमांक के बीच अंतर है
@Entity
public class Person {
@Id
@TableGenerator(name="TABLE_GEN", table="SEQUENCE_TABLE", pkColumnName="SEQ_NAME",
valueColumnName="SEQ_COUNT", pkColumnValue="PERSON_SEQ")
@GeneratedValue(strategy=GenerationType.TABLE, generator="TABLE_GEN")
private long id;
...
}
मेरे प्रणाली है अत्यधिक समवर्ती। चूंकि मेरा डीबी एक माइक्रोसॉफ्ट एसक्यूएल सर्वर है, मुझे नहीं लगता कि यह @SequenceGenerator
का समर्थन करता है, इसलिए मुझे @TableGenerator
के साथ रहना है जो समवर्ती मुद्दों के लिए प्रवण है।
प्रश्न 2। यह लिंक यहां (http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Advanced_Sequencing) बताता है कि बी समवर्ती मुद्दों से ग्रस्त हो सकता है, लेकिन मुझे प्रस्तावित समाधान समझ में नहीं आता है। अगर कोई मुझे समझा सकता है कि बी के साथ समवर्ती मुद्दों से बचने के लिए कोई मुझे समझा सकता है।
If a large sequence pre-allocation size is used this becomes less of an issue, because the sequence table is rarely accessed.
Q2.1:: हम आवंटन कितना आकार के बारे में यहाँ बात कर रहे हैं यहाँ उनके समाधान का एक टुकड़ा है? क्या मुझे allocationSize=10
या allocationSize=100
करना चाहिए?
Some JPA providers use a separate (non-JTA) connection to allocate the sequence ids in, avoiding or limiting this issue. In this case, if you use a JTA data-source connection, it is important to also include a non-JTA data-source connection in your persistence.xml.
Q2.2: मैं अपने प्रदाता के रूप में EclipseLink का उपयोग करें; क्या मुझे उपरोक्त सुझाव देने के लिए क्या करना है?
क्यू 3। यदि बी समवर्ती मुद्दों से ग्रस्त है, तो ए समान है?
जब आपने कहा: 'चुनौती इस सुविधा को जेपीए द्वारा उपयोग करने के लिए स्थानांतरित करना है।', क्या आप '@ जेनरेटेड वैल्यू 'के उपयोग को संदर्भित करते हैं? तो मैं तालिका 'ऑटोऑसिशन' तालिका में कॉलम सेट करने का प्रयास करता हूं, फिर मैं गुणक 'व्यक्ति' बनाने की कोशिश करता हूं। पहला व्यक्ति 'id' के साथ सही ढंग से 5 से शुरू होता है, लेकिन यह व्यक्ति 2 के लिए अपवाद उत्पन्न करता है। 'कार्य क्लोन की इकाई में शून्य या शून्य प्राथमिक कुंजी का सामना करना पड़ा'। क्या हम आईडी को '@ आईडी' के साथ' @ जेनरेटेड वैल्यू 'के बिना एनोटेट नहीं कर सकते हैं, फिर इकाई ऑब्जेक्ट को जारी रख सकते हैं, और डेटाबेस को' ऑटोऑर्डरक्रिएशन 'पीके के साथ ख्याल रखना चाहिए? –
क्या आप अपना मानचित्रण दिखा सकते हैं? जेपीए कार्यान्वयन को बताने के लिए आपको '@ जेनरेटेड वैल्यू' का उपयोग करना चाहिए कि आईडी की देखभाल की जाती है। यहां जाने में आपकी सहायता करने के लिए यहां एक लिंक दिया गया है: http://www.developerscrappad.com/408/java/java-ee/ejb3-jpa-3-ways-of-generating-primary-key-through-generatedvalue/ –