ConnectionFactory dan foydalanish
Spring R2DBC orqali ma'lumotlar bazasiga ulanishni ConnectionFactory orqali amalga oshiradi. ConnectionFactory R2DBC spetsifikatsiyasining bir qismi bo'lib, drayverlar uchun umumiy kirish nuqtasini ifodalaydi. Bu, konteyner yoki framework'ga ulanishlar poolini boshqarish va tranzaktsiyalarni boshqarishni koddan yashirish imkonini beradi. Dasturchi sifatida, sizga ma'lumotlar bazasiga qanday ulanish kerakligini batafsil bilish shart emas. Bu mas'uliyat ConnectionFactory ni o'rnatadigan administratorning zimmasida. Ehtimol, siz kodni ishlab chiqish va sinov qilishni ham amalga oshirasiz, lekin qanday qilib ishlab chiqarish ma'lumot manbasi sozlanganligini bilishga majbur emassiz.
Agar siz R2DBC darajasidan Spring orqali foydalansangiz, unda uchinchi tomon tomonidan taqdim etilgan ulanish poolini amalga oshiruvchi o'zizni sozlashingiz mumkin. Mashhur amalga oshirish R2DBC pool (r2dbc-pool). Spring distribusiyasidagi amalga oshirishlar faqat test maqsadlari uchun mo'ljallangan va pool bilan birlashtirishni ta'minlamaydi.
ConnectionFactory ni sozlash uchun:
-
ConnectionFactoryni oddiygina R2DBC'danConnectionFactoryolgandek ulang. -
R2DBC URL manzilini kiriting (to'g'ri qiymatni drayver hujjatlarida ko'ring).
Quyidagi misolda ConnectionFactory ni qanday sozlash ko'rsatilgan:
ConnectionFactory factory = ConnectionFactories.get("r2dbc:h2:mem:///test?options=DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE");
val factory = ConnectionFactories.get("r2dbc:h2:mem:///test?options=DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE");
ConnectionFactoryUtils dan foydalanish
ConnectionFactoryUtils klassi, ConnectionFactory dan ulanishlarni o'rnatish va ular kerak bo'lsa yopish uchun statik metodlar taqdim etuvchi qulay va to'liq xususiyatli yordamchi klassdir.
Bu R2dbcTransactionManager kabi Context ga ulaning va unga bog'liq ulanishlarni qo'llab-quvvatlaydi.
SingleConnectionFactory dan foydalanish
SingleConnectionFactory klassi, har foydalanishdan keyin yopilmaydigan bitta Connection ni o'rab olish uchun DelegatingConnectionFactory interfeysining amalga oshirilishi hisoblanadi.
Agar ba'zi klient kod close ni chaqirsa va ulanish pooli mavjud deb faraz qilsa (suppressClose xususiyati true ga o'rnatilishi kerak bo'lsa), bu parametr jismoniy ulanishni o'rab turgan va uni yopish va bosimini qaytarib beruvchi proxyni qaytaradi. E'tibor bering, endi uni lokal Connection yoki shunga o'xshash ob'ektga o'tish mumkin emas.
SingleConnectionFactory asosan sinov klassi bo'lib, R2DBC drayveringiz bunday foydalanishga ruxsat bersa, quvurga qo'yishga bo'lgan maxsus talablar uchun ishlatilishi mumkin. ConnectionFactory pooliga nisbatan, bu har doim bitta va o'sha ulanishni qayta ishlatishga imkon beradi, bu jismoniy ulanishlarni ortiqcha yaratishdan qochadi.
TransactionAwareConnectionFactoryProxy dan foydalanish
TransactionAwareConnectionFactoryProxy - bu maqsadli ConnectionFactory ning proxysi. Proxy, ushbu maqsadli ConnectionFactory ni Spring tomonidan boshqariladigan tranzaktsiyalar bilan mosligini oshirish uchun o'raydi.
ConnectionFactoryUtils ga to'g'ri kirish imkoniyati bilan R2DBC klientini integratsiyalash maqsadga muvofiqdir.
Batafsil ma'lumotni TransactionAwareConnectionFactoryProxy javadocida ko'ring.
R2dbcTransactionManager dan foydalanish
R2dbcTransactionManager klassi, alohida R2DBC ma'lumot manbalari uchun ReactiveTransactionManager ning amalga oshirilishi hisoblanadi. U R2DBC ulanishini ko'rsatilgan ulanish fabricasidan Context obunachisiga bog'laydi va potensial ravishda har bir ulanish fabrica uchun bir obunachi ulanishiga imkon beradi.
Kod ilovasi, R2DBC ulanishini ConnectionFactoryUtils.getConnection(ConnectionFactory) orqali olish kerak, R2DBC uchun oddiy ConnectionFactory.create() orniga.
Barcha framework klasslari (masalan, DatabaseClient) ushbu strategiyani tushmasdan ishlatadilar. Agar strategiyani qidirish ushbu tranzaktsiya menejeri bilan ishlatilmasa, u oddiy kabi ishlaydi. Shunday qilib, har qanday holatda uni ishlatishi mumkin.
R2dbcTransactionManager klassi, ulanishga qo'llaniladigan moslashuvchan izolyatsiya darajalarini qo'llab-quvvatlaydi.
GO TO FULL VERSION