JavaRush /Курсхо /All lectures for TG purposes /Идоракунии пайвастҳо ба базаҳои додаҳо

Идоракунии пайвастҳо ба базаҳои додаҳо

All lectures for TG purposes
Сатҳи , Дарс
дастрас

Истифодаи ConnectionFactory

Spring пайвасти R2DBC ба базаи додаҳоро тавассути ConnectionFactory месозад. ConnectionFactory як қисми спецификацияи R2DBC аст ва ба сифати нуқтаи умумии вуруд барои драйверҳо хизмат мекунад. Ин ба контейнер ё framework имконият медиҳад, ки масоили ба пул пайваст кардани пайвастҳо ва идоракунии амалиётҳоро аз рамзи барнома пинҳон кунад. Ба ту ҳамчун таҳиягар лозим нест, ки муфассал бидонӣ, ки чӣ гуна бо базаи додаҳо пайваст шудан мумкин аст. Барои ин администратор масъул аст, ки ConnectionFactory-ро танзим мекунад. Эҳтимолан, ту ҳар ду нақшро иҷро мекунӣ, зеро ки рамзро таҳия ва санҷиш мекунӣ, вале ба ту ҳатман лозим нест, ки бидонӣ, ки манбаи додаҳои истеҳсолӣ чӣ гуна танзим шудааст.

Агар ту сатҳи R2DBC-ро аз Spring истифода барӣ, пас метавонӣ худро тавассути татбиқи пули пайвастҳо, ки тарафи сеюм пешкаш мекунад, танзим кунӣ. Татбиқи маъруф пул R2DBC (r2dbc-pool) мебошад. Татбиқи дар дистрибутиви Spring танҳо барои мақсадҳои санҷиш пешбинӣ шудаанд ва пули пулаксозиро таъмин намекунанд.

Барои танзим намудани ConnectionFactory:

  1. Пайвастшавӣ ба ConnectionFactory-ро ба мисли он ки одатан ConnectionFactory-ро аз R2DBC мегирӣ, ташкил намо.

  2. URL-адреси R2DBC-ро нишон диҳед (арзиши дурустро дар ҳуҷҷатҳои драйвери худ бинед).

Дар мисоли зерин нишон дода шудааст, ки чӣ тавр 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 ва пӯшидани пайвастҳо (ҳангоми зарурат) таъмин мекунад.

Он пайвастҳоро бо Context обуначӣ, масалан, R2dbcTransactionManager дастгирӣ мекунад.

Истифодаи SingleConnectionFactory

Синфи SingleConnectionFactory татбиқи интерфейси DelegatingConnectionFactory мебошад, ки як Connection-ро пӯшонида, пас аз ҳар истифода пӯшида намешавад.

Агар кадом як рамзи муштарӣ close-ро даъват кунад, ба асосе ки пул пайвастҳо мавҷуд аст (ба мисли ҳангоми истифодаи абзорҳои дастгирии нигаҳдории доимии додаҳо), бояд амволи suppressClose-ро ба true насб намояд. Ин параметр проксиеро бармегардонад, ки пӯшида шудани физикиро пинҳон мекунад. Огоҳ бошед, ки дигар онро ба Connection-и нативӣ ё чизи монанд интиқол додан мумкин нест.

SingleConnectionFactory пеш аз ҳама синфи санҷишӣ мебошад ва метавонад барои талаботи махсус, ба мисли тағйиравӣ истифода шавад, агар драйвери R2DBC-и шумо чунин истифода бурданро иҷозат диҳад. Бар хилофи пулакии ConnectionFactory, он истифодаи пайвасти яксонро ҳар вақт иҷозат медиҳад, ки ин аз эҷоди физикии аз ҳад зиёди пайвастҳо пешгирӣ мекунад.

Истифодаи TransactionAwareConnectionFactoryProxy

TransactionAwareConnectionFactoryProxy ин прокси барои ConnectionFactory-и ҳадаф мебошад. Прокси ин ConnectionFactory-и ҳадафро пӯшонида, сатҳи мувофиқати онро бо амалиёти идорашавандаи Spring баланд мекунад.

Истифодаи ин синф зарур аст, агар ту муштарии R2DBC-ро истифода мебарӣ, ки бо абзорҳои дастгирии Spring барои R2DBC ба таври дигар ҳамоҳанг нашудааст. Дар ин ҳолат, метавонӣ ин муштариро идома диҳӣ ва ҳамзамон ин муштариро дар амалиёти идорашавандаи Spring ширкат дошта бошӣ. Одатан, беҳтар аст, ки муштарии R2DBC-ро бо дастрасии дуруст ба ConnectionFactoryUtils барои идоракунии манбаъҳо ҳамроҳ намоӣ.

Маълумоти бештарро дар javadoc оид ба TransactionAwareConnectionFactoryProxy мебинед.

Истифодаи R2dbcTransactionManager

Синфи R2dbcTransactionManager ин татбиқи ReactiveTransactionManager барои манбаъҳои алоҳидаи додаҳои R2DBC мебошад. Он пайвастшавии R2DBC-ро аз фабрикаи пайвастшавии муайяншуда ба Context обуначӣ баста мекунад, ки метавонад ба як пайвасти обуначӣ барои ҳар фабрикаи пайвастшавӣ иҷозат диҳад.

Коди барнома лозим аст, ки пайвастшавии R2DBC-ро тавассути ConnectionFactoryUtils.getConnection(ConnectionFactory) бигирад, на ба таври стандартӣ барои R2DBC ConnectionFactory.create().

Ҳама синфҳои фреймворк (ба мисли DatabaseClient) ин стратегияро ба таври ноаён истифода мебаранд. Агар стратегияи ҷустуҷӯ бо ин менеҷери амалиёт истифода нашуда бошад, пас он мисли оддӣ рафтор мекунад. Аз ин рӯ, дар ҳар сурат онро истифода бурдан мумкин аст.

Синфи R2dbcTransactionManager сатҳҳои изолятсияи мушаххасро дастгирӣ мекунад, ки ба пайвастшавӣ татбиқ карда мешаванд.

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION