می توانید از این راهنما برای درک ساده و عملی نحوه عملکرد مدیریت تراکنش بهار با حاشیه نویسی معاملاتی @استفاده کنید.
تنها پیش نیاز? شما باید یک ایده خشن در مورد اسید داشته باشید یعنی معاملات پایگاه داده چیست و چرا باید استفاده شود. همچنین, معاملات توزیع شده و یا معاملات واکنشی در اینجا پوشش داده نمی, هر چند اصول کلی, از نظر بهار, هنوز هم اعمال می شود.
مقدمه
در این راهنما شما در حال رفتن به در مورد ارکان اصلی چارچوب انتزاع معامله بهار هسته را یاد بگیرند (یک اصطلاح گیج کننده, مگه نه?)- با بسیاری از نمونه های کد توصیف شده است:
@معاملاتی (مدیریت معامله اعلانی) در مقابل مدیریت تراکنش برنامه ای.
فیزیکی در مقابل معاملات منطقی.
بهار @تراکنش و یکپارچه سازی یپا / خواب زمستانی.
بهار @معاملاتی و بهار بوت و یا بهار ام وی سی ادغام.
عقبگرد, پروکسی, مشکلات مشترک و بیشتر از حد.
همانطور که به مخالف, گفتن, اسناد و مدارک رسمی بهار, این راهنمای شما را با غواصی درست به موضوع بهار اول اشتباه نیست .
در عوض شما در حال رفتن به یادگیری بهار مدیریت معامله راه غیر متعارف : از زمین تا گام به گام. این به این معنی, شروع با ساده قدیمی مدیریت معامله جی دی بی سی.
زیرا هر کاری که بهار انجام می دهد بر اساس همین اصول اولیه جی دی بی سی است. و شما یک تن از زمان با حاشیه نویسی معاملاتی @بهار را نجات دهد بعد, اگر شما درک این اصول اولیه.
مدیریت تراکنش ساده جی دی بی سی چگونه کار می کند
اگر شما به فکر پرش این بخش, بدون دانستن معاملات جی دی بی سی در داخل و خارج: نمی .
چگونه برای شروع, مرتکب و یا عقبگرد معاملات جی دی بی سی
اولین مهم را دور این است: مهم نیست که اگر شما با استفاده از بهار @حاشیه نویسی معاملاتی, دشت خواب زمستانی, جوق و یا هر کتابخانه پایگاه داده های دیگر.
در پایان همه همان چیزی که برای باز کردن و بستن (اجازه دهید تماس بگیرید که 'مدیریت') معاملات پایگاه داده انجام می دهند. کد مدیریت تراکنش ساده جی دی بی سی به این شکل است:
برای شروع معاملات به اتصال به پایگاه داده نیاز دارید. مدیر راننده.دریافت اتصال (نشانی اینترنتی, کاربر, رمز عبور) نیز کار می کنند, اگرچه در اکثر برنامه های سازمانی شما یک منبع داده پیکربندی شده و از این طریق ارتباط برقرار خواهید کرد.
این تنها راه برای 'شروع' معامله پایگاه داده در جاوا است, حتی اگر نام ممکن است کمی خاموش صدا. مجموعه(درست) اطمینان حاصل می کند که هر بیانیه اس کیو ال به طور خودکار در تراکنش خود پیچیده می شود و مجموعه خودکار(نادرست) برعکس است: شما استاد معامله(ها) هستید و باید شروع به تماس با تعهد و دوستان کنید. توجه داشته باشید, پرچم کمیته خودکار برای تمام مدت اتصال شما باز است معتبر است, که بدان معنی است که شما فقط نیاز به پاسخ روش یک بار, نه بارها و بارها.
بیایید معامله خود را انجام دهیم…
یا, عقبگرد تغییرات ما, اگر یک استثنا وجود دارد.
بله, این 4 خطوط (ساده) همه چیز را که بهار می کند هر زمان که شما با استفاده از @حاشیه نویسی معاملاتی. در فصل بعدی خواهید فهمید که چگونه این کار می کند. اما قبل از ما وجود دارد, یک کمی بیشتر شما نیاز به یادگیری وجود دارد.
(یک یادداشت سریع برای شلوار هوشمند: کتابخانه های استخر اتصال مانند هیکاریکپ بسته به پیکربندی ممکن است حالت خودکار را به طور خودکار برای شما تغییر دهند. اما این یک موضوع پیشرفته است.)
نحوه استفاده از سطوح جداسازی جی دی بی سی و نقاط ذخیره
اگر شما در حال حاضر با حاشیه نویسی @معاملاتی بهار بازی شما ممکن است چیزی شبیه به این مواجه می شوند:
ما معاملات بهار تو در تو و سطوح انزوا را بعدا به تفصیل پوشش خواهیم داد, اما باز هم به شما کمک می کند تا بدانید که این پارامترها همه به کد زیر خلاصه می شوند, کد پایه جی دی بی سی:
به این ترتیب فنر سطوح جداسازی را در اتصال پایگاه داده تنظیم می کند. نه دقیقا علم موشک, است?
معاملات تو در تو در بهار فقط نقاط ذخیره جی دی بی سی / پایگاه داده هستند. اگر شما نمی دانید که یک نقطه ذخیره است, برای مثال نگاهی به این اموزش. توجه داشته باشید که پشتیبانی ذخیره نقطه وابسته به درایور/پایگاه داده جی دی بی سی خود را است.
مدیریت تراکنش بهار یا بهار بوت چگونه کار می کند
همانطور که شما در حال حاضر درک معامله جی دی بی سی خوب, اجازه دهید یک نگاه در چگونه ساده, هسته بهار مدیریت معاملات. همه چیز در اینجا اعمال 1:1 به بوت بهار و بهار ام وی سی, اما بیشتر در مورد که کمی بعد..
چه در واقع مدیریت معامله بهار و یا است (و نه اشتباه به نام) چارچوب انتزاع معامله?
به یاد داشته باشید, مدیریت تراکنش به سادگی به معنی: چگونه بهار شروع, مرتکب و یا عقبگرد معاملات جی دی بی سی? این صدا به هیچ وجه شناخته شده از بالا?
در اینجا گرفتن: در حالی که با جی دی بی سی ساده شما فقط یک راه (کمیته خودکار(نادرست)) برای مدیریت معاملات, بهار به شما می دهد بسیاری از مختلف, راه های راحت تر برای رسیدن به همان.
چگونه به استفاده از مدیریت معامله برنامه ای بهار?
اولین روش اما نسبتا کم استفاده شده برای تعریف معاملات در بهار به صورت برنامه نویسی است: یا از طریق یک الگوی تراکنش یا مستقیما از طریق سیستم عاملمدیریت تراکنش. کد عاقلانه, به نظر می رسد این:
شما لازم نیست که به یک ظرف غذا با باز کردن یا بستن اتصالات پایگاه داده خود را (سعی کنید-در نهایت). در عوض شما با استفاده از تماس مجدد معامله.
شما همچنین لازم نیست که برای گرفتن استثنا مربع, به عنوان بهار این استثنا به استثنا در زمان اجرا برای شما تبدیل.
و شما ادغام بهتری در اکوسیستم بهار دارید. الگوی تراکنش از یک مدیر تراکنش به صورت داخلی استفاده می کند که از یک منبع داده استفاده می کند. همه لوبیا که شما باید مشخص کنید در پیکربندی زمینه بهار خود را, اما سپس لازم نیست که در مورد دیگر نگران بعد.
در حالی که این به عنوان یک پیشرفت کوچک محسوب می شود, مدیریت تراکنش برنامه ای چیزی نیست که چارچوب تراکنش بهار به طور عمده در مورد است. بجای, این همه در مورد مدیریت معامله اعلانی . بیایید دریابیم که این چیست.
چگونه به استفاده از بهار اکسامال مدیریت معامله اعلانی?
در روز, زمانی که پیکربندی اکسامال هنجار برای پروژه های بهار بود, شما می توانید معاملات به طور مستقیم در اکسامال پیکربندی. جدا از چند میراث, پروژه های سازمانی, شما این رویکرد را دیگر در طبیعت پیدا نخواهید کرد, زیرا با حاشیه نویسی معاملاتی بسیار ساده تر جایگزین شده است.
ما در این راهنما به تفصیل در مورد پیکربندی اکسامال نمی پردازیم اما می توانید از این مثال به عنوان نقطه شروع برای فرو رفتن عمیق تر استفاده کنید-در صورت نیاز (مستقیما از اسناد رسمی بهار گرفته شده است):
شما در حال مشخص کردن یک مشاوره (برنامه نویسی جنبه گرا) با بلوک اکسامال فوق هستید که سپس می توانید به لوبیا خدمات کاربری خود اعمال کنید:
خدمات کاربری شما لوبیا به این شکل خواهد بود:
از دیدگاه کد جاوا این رویکرد معامله اعلانی بسیار ساده تر از رویکرد برنامه ای به نظر می رسد. اما منجر به بسیاری از پیچیده, اکسامال طولانی, با تنظیمات نقطه و مشاور.
بنابراین, این منجر به این سوال: یک راه بهتر برای مدیریت معامله اعلانی به جای اکسامال وجود دارد? بله, وجود دارد: @حاشیه نویسی معاملاتی.
نحوه استفاده از حاشیه نویسی معاملاتی بهار (مدیریت معاملات اعلانی )
حال بیایید نگاهی بیندازیم که مدیریت معاملات بهاری مدرن معمولا چگونه است:
چگونه این امکان پذیر است? هیچ پیکربندی اکسامال بیشتر وجود دارد و همچنین هیچ کد دیگر مورد نیاز وجود دارد. بجای, شما در حال حاضر نیاز به انجام دو چیز:
اطمینان حاصل کنید که پیکربندی فنر شما با حاشیه نویسی مدیریت تراکنش @فعال شده است (در بوت بهار این کار به طور خودکار برای شما انجام می شود ).
اطمینان حاصل کنید که یک مدیر معامله را در پیکربندی بهار خود مشخص کنید (این شما باید به هر حال انجام دهید).
و سپس بهار به اندازه کافی هوشمند به شفاف رسیدگی به معاملات برای شما است: هر روش عمومی باقلا سبز شما را با حاشیه نویسی معاملاتی @حاشیه نویسی, در داخل یک معامله پایگاه داده اجرا (توجه داشته باشید: برخی از مشکلات وجود دارد).
بنابراین, برای دریافت @حاشیه نویسی معاملاتی کار, همه شما باید انجام دهید این است:
حالا وقتی می گویم بهار به طور شفاف معاملات را برای شما انجام می دهد. به چه معنی است که واقعا ?
مسلح با دانش از مثال معامله جی دی بی سی, @کد خدمات کاربری معاملاتی بالا ترجمه (ساده شده) به طور مستقیم به این:
همه اینها فقط باز و بسته شدن استاندارد اتصال جی دی بی سی است. این همان کاری است که حاشیه نویسی معاملاتی بهار به طور خودکار و بدون نیاز به نوشتن صریح برای شما انجام می دهد.
این کد خود شما است, صرفه جویی در کاربر از طریق یک داو یا چیزی مشابه.
این مثال ممکن است نگاه کمی جادویی, اما اجازه دهید یک نگاه چگونه بهار درج این کد اتصال برای شما.
پروکسی های سی جی کی کی - @معاملاتی تحت پوشش
بهار واقعا نمی تواند بازنویسی کلاس جاوا خود را, مثل من در بالا, برای وارد کردن کد اتصال (مگر اینکه شما با استفاده از تکنیک های پیشرفته مانند بایت کد بافی, اما ما در حال نادیده گرفتن که در حال حاضر).
ثبت نام شما کاربر() روش واقعا فقط خواستار کاربر.ذخیره (کاربر), هیچ راهی برای تغییر که در پرواز وجود دارد.
اما بهار یک مزیت دارد. در هسته خود, این کانتینر کمیته بین المللی المپیک است. این نمونه یک سرویس کاربری برای شما و اطمینان حاصل می کند به سیم کشی خودکار که خدمات کاربر را به هر لوبیا دیگر که نیاز به یک سرویس کاربر.
در حال حاضر هر زمان که شما با استفاده از @معاملاتی در لوبیا, بهار با استفاده از یک ترفند کوچک. این کار نه تنها نمونه یک سرویس دهنده, بلکه یک پروکسی معاملاتی که سرویس دهنده.
این کار را از طریق یک روش به نام پروکسی-از طریق-زیر کلاس با کمک کتابخانه سی جی گلیب. راه های دیگری نیز برای ساخت پروکسی ها وجود دارد (مانند پروکسی های پویا جی دی کی) اما بگذارید فعلا این کار را بکنیم.
بیایید پروکسی ها را در عمل در این تصویر ببینیم:
همانطور که از نمودار می بینید پروکسی یک کار دارد.
باز و بسته شدن اتصالات پایگاه داده / معاملات.
و سپس تفویض به سرویس کاربری واقعی, یکی از شما نوشت.
و سایر لوبیاها مانند کنترل کننده کاربر شما هرگز نمی دانند که با یک پروکسی صحبت می کنند و نه چیز واقعی.
امتحان سریع
به کد منبع زیر نگاهی بیندازید و به من بگویید که فنر سرویس کاربری با فرض اینکه با @تراکنش مشخص شده باشد یا دارای روش تراکنش @باشد به طور خودکار چه نوع سرویس کاربری را می سازد.
درسته. اسپرینگ یک پروکسی دینامیک از کلاس سرویس کاربری شما می سازد که می تواند تراکنش های پایگاه داده را برای شما باز و بسته کند. شما یا هر لوبیای دیگری حتی متوجه نخواهید شد که این سرویس کاربری شما نیست بلکه یک پروکسی است که سرویس کاربری شما را بسته بندی می کند.
راهنمای معاملات بهار
اگر شما می خواهید به راحتی عمیق, درک عملی از دنیای واقعی مدیریت بهار تک, از جمله تست, بهترین شیوه & اجتناب از مشکلات رایج: من در حال حاضر نوشتن یک راهنمای کوتاه برای شما.
علاقه مند به تلاش از فصل اول به صورت رایگان, به محض این که در دسترس است?
برای چه چیزی به یک مدیر تراکنش نیاز دارید(مانند مدیر سیستم عامل)?
در حال حاضر تنها یک قطعه مهم از اطلاعات از دست رفته وجود دارد, حتی اگر ما چند بار ذکر کرده اند در حال حاضر.
سرویس کاربری شما در حین پرواز پراکسی می شود و پروکسی معاملات را برای شما مدیریت می کند. اما این پروکسی خود را دست زدن به تمام این دولت معاملاتی نیست (باز کردن, متعهد, بستن), نمایندگان پروکسی که به یک مدیر معامله کار .
بهار به شما یک رابط مدیر / مدیر تراکنش سیستم عامل را پیشنهاد می دهد که به طور پیش فرض با چند پیاده سازی مفید همراه است. یکی از این موارد مدیریت تراکنش ها است.
این دقیقا همان کاری است که شما تاکنون برای مدیریت معاملات انجام داده اید, اما ابتدا اجازه دهید پیکربندی بهار مورد نیاز را بررسی کنیم:
شما ایجاد یک پایگاه داده خاص و یا اتصال استخر منبع داده خاص در اینجا. خروجی زیر است که برای این مثال استفاده می شود.
در اینجا شما مدیر تراکنش خود را ایجاد می کنید که برای مدیریت تراکنش ها به یک منبع داده نیاز دارد.
ساده به عنوان. سپس همه مدیران تراکنش روشهایی مانند "شروع" (برای شروع معامله) یا "مستندسازی" دارند که به این شکل است - مستقیما از کد منبع بهار گرفته شده و کمی ساده شده است:
بنابراین مدیر تراکنش منبع داده دقیقا از همان کدی استفاده می کند که در بخش جی دی بی سی هنگام مدیریت تراکنش ها مشاهده کردید.
با این حساب بیایید تصویر خود را از بالا گسترش دهیم:
به طور خلاصه همه چیز:
اگر بهار تشخیص @حاشیه نویسی معاملاتی در لوبیا, ایجاد یک پروکسی پویا که لوبیا.
پروکسی به یک مدیر تراکنش دسترسی دارد و از او می خواهد معاملات / اتصالات را باز و بسته کند.
خود مدیر تراکنش به سادگی کاری را که شما در بخش جاوا ساده انجام دادید انجام می دهد: مدیریت یک اتصال خوب و قدیمی جی دی بی سی.
چه تفاوتی بین معاملات فیزیکی و منطقی است?
دو کلاس معاملاتی زیر را تصور کنید.
سرویس کاربر دارای روش فاکتور معاملاتی () است. که روش معاملاتی دیگری را ایجاد می کند.
در حال حاضر از نظر معاملات پایگاه داده, این واقعا باید فقط یک معامله پایگاه داده. (به یاد داشته باشید: دریافت اتصال(). تنظیم خودکار (نادرست). متعهد(). ) بهار خواستار این معامله فیزیکی, حتی اگر این صدا ممکن است کمی گیج کننده در ابتدا.
از طرف بهار اما دو معامله منطقی در حال وقوع است: اول در سرویس کاربر و دیگری در سرویس صورتحساب. بهار باید به اندازه کافی هوشمند باشد تا بداند که هر دو روش معاملاتی @باید از همان تراکنش پایگاه داده فیزیکی استفاده کنند.
چگونه همه چیز متفاوت خواهد بود, با تغییر زیر به خدمات فاکتورها?
تغییر حالت انتشار به نیاز_جدید به بهار می گوید که ایجاد() باید در معامله خود مستقل از هر معامله دیگری که از قبل موجود است اجرا شود. فکر بازگشت به بخش جاوا ساده از این راهنمای, یک راه به "تقسیم" یک معامله در نیمه شما را ببینید? منم همینطور.
که اساسا به این معنی است که کد شما دو اتصال/تراکنش (فیزیکی) را به پایگاه داده باز می کند. (دوباره: دریافت اتصال () ایکس2. تنظیم خودکار (نادرست) ایکس2. متعهد () ایکس2) بهار اکنون باید به اندازه کافی هوشمند باشد که دو قطعه معاملاتی منطقی (فاکتور()/ایجاد()) اکنون نیز به دو تراکنش متفاوت و فیزیکی پایگاه داده نقشه برداری کنند.
بنابراین, به طور خلاصه همه چیز:
معاملات فیزیکی: معاملات جی دی بی سی واقعی شما هستند.
معاملات منطقی: هستند (به طور بالقوه تو در تو) @معامله مشروح (بهار) روش.
این امر ما را به پوشش دقیق تر حالت های انتشار سوق می دهد.
@سطوح انتشار معاملاتی مورد استفاده برای چیست?
هنگامی که به دنبال در کد منبع بهار, شما انواع سطوح انتشار و یا حالت های که شما می توانید به روش @معاملاتی وصل پیدا کنید.