आप सही कह रहे हैं कि सामान्य रणनीति एक नया वर्ग बनाना है जो स्नैपशॉट जेनरेटर को लागू करता है, लेकिन कुछ अन्य चरण भी हैं जिन्हें आपको करने की आवश्यकता है। सामान्य स्नैपशॉट प्रक्रिया है:
- Liquibase SnapshotGenerator के कार्यान्वयन की खोज करता है और डेटाबेस में मिलने वाली प्रत्येक वस्तु के लिए AddTo() को कॉल करता है। अपने प्रकारों के लिए, आप शायद एक त्वरित "यदि पारित वस्तु उदाहरण स्कीमा" चाहते हैं क्योंकि वे प्रकार हैं जो एक स्कीमा का हिस्सा हैं।
- आपको डेटाबेसऑब्जेक्ट को लागू करने वाले नए पैकेज, StoredProcedure, आदि ऑब्जेक्ट बनाने होंगे। वे ehte liquibase.structure.core.Table क्लास की तरह होंगे और ऑब्जेक्ट की स्थिति को कैप्चर करेंगे। वे आपके SnapshotGenerator.addsTo() विधि में पहचाने जाने योग्य (नाम, स्कीमा, आदि सेट) के बिंदु पर बनाए गए हैं
- ऐसे सभी ऑब्जेक्ट जो AddTo () विधि द्वारा जोड़े जाते हैं, फिर आपके SnapshotGenerator.snapshotObject() विधि के माध्यम से चलाए जाते हैं जो किसी भी अतिरिक्त मेटाडेटा को खींच लेगा जो आपको मूल रूप से नहीं मिला था, जैसे कि संग्रहीत प्रक्रिया पाठ, आदि।
- एक बार जब लिक्विबेस में आपके ऑब्जेक्ट वाला एक स्नैपशॉट होता है, तो यह स्नैपशॉट की तुलना दूसरे से करता है (जेनरेट चेंजलॉग मामले में एक खाली स्नैपशॉट) यह निर्धारित करने के लिए कि कौन सी वस्तुएं गायब हैं, अप्रत्याशित हैं, और दूसरे स्नैपशॉट में बदल गई हैं। इसके बाद यह MissingObjectChangeGenerator, UnexpectedObjectChangeGenerator, और ChangedObjectChangeGenerator के कार्यान्वयन की तलाश करता है। GenerateChangeLog के लिए केवल "लापता" ऑब्जेक्ट होंगे ताकि आप MissingTriggerChangeGenerator, MissingPackagedChangeGenerator आदि को लागू कर सकें। उनका काम गायब ऑब्जेक्ट बनाने के लिए चेंज इंस्टेंस बनाना है
- Msising*ChangeGenerator वर्ग RawSqlChange उदाहरण लौटा सकता है या आप CreateTriggerChange जैसे परिवर्तन के नए कार्यान्वयन बना सकते हैं।