Java жобасын жасау туралы сериядан мақала (басқа материалдарға сілтемелер соңында). Оның мақсаты – негізгі технологияларды талдау, нәтижесі – телеграмма ботын жазу. Бұл бөлімде біз SpringBoot және Flyway іске қосуға тырысамыз. Теорияның ең аз мөлшері, қалауыңыз бойынша))) Біз Flyway/Liquibase соңғы салыстыруын белгісіз уақыт кезеңіне өткізбейміз және нүктеге жетеміз. Солай болса да, ол әлі де созылып кетті. Flyway-ді екі рет сипаттамау үшін мен оны болашақ JRTB жобамызға бірден қосуды шештім.
көп қырлы, көп модульді:
Осының бір бөлігі ретінде не істеуіміз керек?
- Maven негізіндегі SpringBoot қолданбасын іске қосыңыз.
- Онда Flyway қосыңыз: бақытымызға орай, олар оңай біріктірілген.
- Мысал дерекқорда бар кестелер үшін схеманы қосыңыз.
Ұшу жолы дегеніміз не
Бір нәрсені пайдалану үшін алдымен оның не екенін және неге екенін анықтау керек. Flyway - дерекқор нұсқасын басқару құралы. Сөздері белгілі, бірақ әйтеуір түсінік қосылмады, солай емес пе? Ұшу жолы шешетін мәселені сипаттауға тырысайық. Бізде жоба бар делік. Біздің әлемдегі барлық нәрсе сияқты, ол мінсіз емес, сондықтан жобаның соңғы нұсқасын жоспарлау және құрастыру мүмкін болмады. Белгілі бір ескерілмеген нюанстар пайда болған сайын. Жоба өз жұмысында мәліметтер қорын пайдаланады. Әрине, жоба өзгерсе, дерекқор құрылымы да өзгеруі мүмкін. Жобамыздағы нысандардың бірі үшін жаңа өріс қостық делік. Бұны қалай істейді?- Бұл өрісті біздің нысанға қосыңыз, бизнес логикасы жұмыс істейтіндей етіп бәрін жаңартыңыз.
- Дерекқорды жаңартыңыз. Мүмкін болатын жалғыз әдіс - оны қолмен жасау. Мұны істеу үшін сізге кіріп, қажетті sql сценарийін тіркеу керек.
- Бірақ егер бізде жобаны орналастыратын бірнеше орын болса, онда мұны олардың әрқайсысында жасау керек пе?
- және егер біз қайтып оралғымыз келсе, дерекқор құрылымы қазір қандай күйде екенін қайдан білеміз?
- Дерекқорды өзгерту сәтті болғанына қалай сенімді боламыз?
- Жобада орын алған барлық дерекқор өзгерістерін қадағалау мүмкіндігін қалай алуға болады?
SpringBoot + Flyway іске қосыңыз
Көктемгі аяқ киім дегеніміз не
Біз нені іске қосып жатырмыз?... Нені және не үшін істеп жатқанымызды түсіну үшін SpringBoot деген не екенін шешу керек. Алдымен, көктем туралы тез (жақсы, өте жылдам) сөйлесейік . Қазіргі уақытта бұл Java-да serverлік қосымшаларды әзірлеуде іс жүзінде салалық стандарт болып табылады. Ненің стандарты? Мұны сізге қалай түсіндіре аламын? Көктем - бұл қосымшаның қаңқасы, оған біз «етті» тастаймыз - біздің бизнес логика. Көктемнің көмегімен (бұдан әрі мен бұл калька қағазын тілдерді ауыстыруға уақытты жоғалтпау үшін қолданамын:D)) Көктем бізге бәрін жасай бастайтын бастама береді. Ол- Мәліметтер қорымен жұмыс істегіңіз келе ме? Сіз қарым-қатынасты қалайсыз ба? Сіз қарым-қатынассыз болғыңыз келе ме? Міне, біз көктемгі деректермен келдік.
- http сұрауларымен жұмыс істегіңіз келе ме? Міне, көктемгі веб (Spring MVC).
- Сізге бір жерде барлық нысандарға арналған контейнер керек пе? Міне көктемгі өзегі.
- Әртүрлі рөлдер мен командалар тізбегі болуы үшін жобада қауіпсіздікті орнату керек пе? Көктемгі қауіпсіздік.
- Сіз мұндай нәрсенің болуы жақсы болар еді деп ойлаған кезде, көктемде сізге қажет нәрсе бар және ол тез және оңай біріктіріледі.
SpringBoot іске қосылуда
Біз Maven не екенін түсінгендіктен, өз қажеттіліктеріміз үшін жаңа жобаны жасайық. Мұны істеу үшін сізге осы мәселе үшін арнайы жасалған веб-сайтқа бару жеткілікті. Ол Spring Initializr деп аталады . Мұнда сізге қажет нәрсені толтырып, таңдау керек:- Жобаны құрастыру құралы gradle немесе maven болып табылады. Көріп отырғаныңыздай, Құмырсқа туралы енді тіпті айтылмайды. Бұл қандай құрастыру құралдары уақытыңызды қажет ететіні туралы жақсы кеңес.
- Сіз жаза алатын тіл - java, kotlin, groovy. Мұнда барлығы қарапайым: олардың барлығы JVM-ге ұқсас және Java codeын оңай іске қосады. Айтпақшы, Котлинге қараған жөн. Groovy қызықсыз болды (бір кездері олар ойықтарға ауысқан, бірақ ол тез өтті).
- Көктем нұсқасы... Мұнда көктемнің негізгі бөлігінің және оның модульдерінің нұсқалары сәйкес келетінін түсіну керек.
- Жоба деректері. Мен бұл нәрселерді жоғарыда сипаттадым.
- Біз қандай мұрағат жиналатынын таңдаймыз - Jar немесе War.
- Біздің сүйікті Java нұсқасы. Ал соңғы кездері мұндай нұсқалар көп болды... Жылдар күтті, енді жылына екі болады.
- Мэвен - бұл туралы сізбен бұрын сөйлескеніміз бекер емес.
- Java - біздің сүйіктіміз: D
- 2.2.11 нұсқасын алайық. Неге ең жаңасы емес? Өйткені ол неғұрлым жаңа болса, онда қателердің болуы ықтималдығы соғұрлым жоғары болады. Біз үшін қай нұсқа маңызды емес, бірақ ескісі сенімдірек болады. Сондықтан біз 2.2.11 таңдаймыз.
- Топ: com.github.javarushcommunity
- Артефакт: Springboot-flyway-демо
- Атауы: SpringBoot + Flyway Demo
- Сипаттама: Жоба SpringBoot және Flyway арасындағы интеграцияны көрсетеді . (Иә, құжаттама жазу мүмкіндігі дамудың маңызды бөлігі болып табылады :))
- Пакет атауы: com.github.javarushcommunity.springbootflywaydemo . Мұнда олар бірден біз үшін қосымшаны іске қосатын сыныппен негізгі пакетті жасайды.
- Қаптама: банка
- Ява: 8. Паровоздан озып кетпей, жақсы ескі сегізді алайық. Неге 11 емес? Не үшін? Біздің мысал үшін мен мәнді көрмеймін.
spring.datasource.url=jdbc:mysql://localhost:3306/flyway_demo_db
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Біз негізгі әдісті қайтадан іске қосып, аламыз: Енді кем дегенде бір тасымалдауды қосу керек. Тасымалдауды дұрыс жасау үшін келесі үлгіні алу керек: V<VERSION>__<NAME>.sql Осы үлгіні пайдаланып, сәйкес қалтада V00001__Create_country_table.sql атты тасымалдау файлын жасаймыз : /src/main/resources/ db.migration/ . Онда ел кестесін жасайық. Дерекқор туралы екінші мақаланың сценарийін алайық . Бастамас бұрын, кіріп, жұмыс үшін дерекқор жасайық: flyway_demo_db. Мұны MysqlWorkbench арқылы жасайық: Енді біз негізгі әдісті қайтадан іске қоса аламыз: Барлығы орындалды, бірақ жобада әлі ештеңе болмағандықтан, ол жұмысын аяқтады. Дегенмен, журналдардан ( журналдардың не екенін оқыңыз ) анық:
- Дерекқорға сәтті қосылды.
- Тасымалдау расталды және бәрі жақсы.
- Flyway тасымалдауларды басқару үшін кесте жасады.
- Ал 00001 көші қандай басталды – елдің құрылуы сәтті болды.
Қорытынды
Бұл жолы біз SpringBoot бағдарламасымен бірге дерекқорды тасымалдау құралын қалай түсінуге және пайдалануға болатынын білдік. Бұл ақпарат Flyway мысалында дерекқор нұсқасын басқару құралының не екенін түсіну үшін қажет. Достар, мен көрсеткен жобаның бастапқы codeы Github сайтында біздің ұйымда жарияланған . Егер сізге мысал ұнаса, оған жұлдызша беріңіз , мен менің жұмысымның пайдалы екенін және шынымен жалғастыруға тұрарлық екенін түсінемін. Дәстүрлі түрде мен Github тіркелгісіне жазылуды ұсынамын . Ол арқылы мен барлық жұмысымды ашық бастапқы codeпен және мақалаларыма үнемі ілесіп жүретін барлық демонстрациялық жобаларда жүргіземін. Оқығаныңыз үшін барлығына рахмет. Келесі жолы өтінішімізді жазамыз. Болашақта Docker-те кейбір қажетті теория болады, бірақ біз оны тәжірибемен қатты сұйылтамыз.пайдалы сілтемелер
Бүгінгі күні пайдалы сілтемелер көп емес. Евгенийдің бейнебаянына назар аударыңыз, бұл шынымен де тұрарлық!- Көктемде жобалар жасауға арналған веб-сайт
- Евгений Борисов — көктемгі құрылысшы
- Flyway үшін көктемгі құжаттама
GO TO FULL VERSION