JavaRush /Курстар /All lectures for KK purposes /Дерекқорларға қосылымдарды басқару

Дерекқорларға қосылымдарды басқару

All lectures for KK purposes
Деңгей , Сабақ
Қол жетімді

ConnectionFactory пайдалану

Spring ConnectionFactory арқылы R2DBC қосылымын дерекқорға орнатады. ConnectionFactory R2DBC спецификациясының бөлігі болып табылады және драйверлер үшін жалпы кіру нүктесін білдіреді. Ол контейнер немесе фреймворкке қосылымдарды пулға біріктіру және транзакцияларды басқару мәселелерін қосымша кодтан жасыруға мүмкіндік береді. Дамуышы ретінде сізге дерекқорға қалай қосылу керектігін егжей-тегжейлі білу қажет емес. Бұл үшін ConnectionFactory-ны орнататын әкімші жауапты. Сіз, бәлкім, екі рөлді де атқарасыз, себебі сіз кодты әзірлеп және тестілеп жатырсыз, бірақ өндіріс дерек көзін қалай бапталғанын білудің қажеті жоқ.

Егер сіз Spring арқылы R2DBC деңгейін пайдалансаңыз, онда сіз өзіңіздің жеке қосылымдар пулын конфигурациялай аласыз, ол үшін үшінші тарап ұсынған реализацияны қолдануыңызға болады. Танымал реализациялардың бірі - R2DBC пул (r2dbc-pool). Spring дистрибуциясындағы реализациялар тек тестілеу мақсатында қолданылады және олардың құралуы пулға біріктірілмейді.

ConnectionFactory конфигурациялау үшін:

  1. Сіз R2DBC-ден ConnectionFactory әдеттегідей алатын секілді оны қосыңыз.

  2. R2DBC URL-ін көрсетіңіз (дұрыс мәнді драйверіңіздің құжаттамасына қараңыз).

Төмендегі мысалда ConnectionFactory-ды қалай конфигурациялау керектігі көрсетілген:

Java
ConnectionFactory factory = ConnectionFactories.get("r2dbc:h2:mem:///test?options=DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE");
Kotlin
val factory = ConnectionFactories.get("r2dbc:h2:mem:///test?options=DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE");

ConnectionFactoryUtils пайдалану

ConnectionFactoryUtils класы - бұл ыңғайлы және толыққанды көмекші класс, ол ConnectionFactory-ден қосылымдарды орнату және қажет болған жағдайда оларды жабу үшін статикалық әдістерді ұсынады.

Ол R2dbcTransactionManager сияқты, Context жазылушыға бекітілген қосылымдарды қолдайды.

SingleConnectionFactory пайдалану

SingleConnectionFactory класы - бұл DelegatingConnectionFactory интерфейсінің реализациясы, ол бір Connection-ды орауыштайды, әр қолданудан кейін жабылмайды.

Егер қандай да бір клиенттік код close шақыратын болса және қосылымдар пулы бар деп есептейтін болса (постоянды сақтау құралдарын қолдау құралдарымен), онда suppressClose қасиетін true етіп орнату қажет. Бұл параметр физикалық қосылымды орауыштайтын жабуды басатын прокси қайтарады. Енді оны тікелей Connection немесе ұқсас объектке ауыстыруға болмайтынын назарға алыңыз.

SingleConnectionFactory негізінен тесттік класс және ол драйверіңіз R2DBC-де мұндай мүмкіндік берсе, құбырлайтын арнайы талаптар үшін қолданылуы мүмкін. ConnectionFactory пулынан айырмашылығы, ол барлық уақытта бір қосылымды қайта пайдалану мүмкіндігін береді, бұл физикалық қосылымдарды артық құрудан аулақ болуға мүмкіндік береді.

TransactionAwareConnectionFactoryProxy пайдалану

TransactionAwareConnectionFactoryProxy - бұл мақсатты ConnectionFactory үшін прокси. Прокси осы мақсатты ConnectionFactory-ды орауыштап, оның Spring арқылы басқарылатын транзакциялармен үйлесімділігін арттырады.

Бұл класс R2DBC клиентін қолданып, Spring қолдауымен өзара интеграцияланбаған кезде маңызды. Осылайша, сіз R2DBC клиентін пайдалануды жалғастыра аласыз және бұл клиенттің Spring арқылы басқарылатын транзакцияларға қатысуын қамтамасыз ете аласыз. Әдетте, ConnectionFactoryUtils арқылы ресурстарды басқаруға қол жеткізу үшін R2DBC клиентін дұрыс интеграциялау артықшылықты.

TransactionAwareConnectionFactoryProxy туралы қосымша ақпаратты javadoc-тан қараңыз.

R2dbcTransactionManager пайдалану

R2dbcTransactionManager класы - бұл R2DBC дерекқорлардың дербес дерек көздері үшін ReactiveTransactionManager реализациясы. Ол берілген қосылу фабрикасынан R2DBC қосылымын жазылушының Context етіп байлап, әрбір қосылу фабрикасы үшін бір жазылушы қосылымын қабылдауға мүмкіндік береді.

Қосымша коды ConnectionFactory.create() стандартты R2DBC орнына ConnectionFactoryUtils.getConnection(ConnectionFactory) арқылы сәйкес R2DBC қосылымын алуы қажет.

Барлық фреймворк кластар (мысалы, DatabaseClient) бұл стратегияны автоматты түрде пайдаланады. Егер іздеу стратегиясы бұл транзакция менеджерімен бірге пайдаланылмаса, ол әдеттегідей жұмыс жасайды. Сол себептен ол кез келген жағдайда қолдануға болады.

R2dbcTransactionManager класы қосылымға қолданылатын қосымша оқшаулау деңгейлерін қолдайды.

Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION