Java долбоорун түзүү жөнүндө бир катар макала (башка материалдарга шилтемелер аягында). Анын максаты негизги технологияларды талдоо, натыйжасы телеграмма бот жазуу болуп саналат. Бул бөлүктө биз SpringBoot жана Flywayди ишке киргизүүгө аракет кылабыз. Теориянын минималдуу көлөмү, сиз каалагандай))) Биз Flyway/Liquibase акыркы салыштыруусун белгисиз мөөнөткө өткөрүп жиберебиз жана пунктка келебиз. Ошондой болсо да ал эчак эле созулуп кеткен. Flyway эки жолу сүрөттөлбөш үчүн, мен аны дароо биздин келечектеги JRTB долбоорубузга кошууну чечтим.
көп кырдуу, көп модулдуу:
Мунун бир бөлүгү катары биз эмне кылышыбыз керек?
- Maven негизинде SpringBoot тиркемесин ишке киргизиңиз.
- Ал жерде Flyway кошуңуз: бактыга жараша, алар оңой интеграцияланган.
- Мисал базасында бизде бар tableлар үчүн схеманы кошуңуз.
Flyway деген эмне
Бир нерсени колдонуу үчүн, адегенде анын эмне экенин жана эмне үчүн экенин аныкташ керек. Flyway маалымат базасынын versionсын башкаруу куралы. Сөздөрү белгилүү, бирок эмнегедир түшүнүк кошула элек, туурабы? Келгиле, учуу жолу чечкен көйгөйдү сүрөттөөгө аракет кылалы. Бизде долбоор бар дейли. Биздин дүйнөдөгү бардык нерселер сыяктуу эле, ал идеалдуу эмес, ошондуктан долбоордун акыркы вариантын пландаштыруу жана түзүү мүмкүн болгон жок. Ар бир жолу белгилүү бир эсепке алынбаган нюанстар пайда болот. Долбоор өз ишинде маалымат базасын колдонот. Албетте, долбоор өзгөрсө, маалымат базасынын структурасы да өзгөрүшү мүмкүн. Долбоорубуздагы an objectтердин бири үчүн жаңы талааны коштук дейли. Муну кандай жасаш керек?- Бул талааны биздин уюмга кошуңуз, бизнес логикасы иштеши үчүн бардыгын жаңыртыңыз.
- Маалымат базасын жаңыртуу. Мүмкүн болгон жалгыз жол - аны кол менен жасоо. Бул үчүн, сиз кирип, керектүү SQL скриптин катташыңыз керек.
- Бирок, эгерде бизде долбоорду ишке ашыра турган бир нече жерибиз болсо, анда муну алардын ар биринде жасоо керекпи?
- жана эгерде биз артка кайтууну кааласак, анда маалымат базасынын түзүмү азыр кандай абалда экенин кайдан билебиз?
- Маалыматтар базасын өзгөртүү ийгorктүү болгонуна кантип ишенсек болот?
- Долбоордо болгон бардык маалыматтар базасына көз салуу мүмкүнчүлүгүн кантип алсам болот?
SpringBoot + Flywayти ишке киргизиңиз
Жазгы Бут деген эмне
Биз эмнени ишке киргизип жатабыз?... Эмне жана эмне үчүн кылып жатканыбызды түшүнүү үчүн SpringBoot деген эмне экенин чечишиңиз керек. Биринчиден, келгиле, тез (жакшы, абдан тез) Жаз жөнүндө сүйлөшөлү . Азыркы учурда, бул Java-да serverдик тиркемелерди иштеп чыгууда де-факто өнөр жай стандарты. Эмненин стандарты? Муну сага кантип түшүндүрсөм болот? Жаз - бул тиркеменин скелети, ага биз "этти" ыргытабыз - биздин бизнес логика. Жаздын жардамы менен (мындан ары мен бул калька кагазын тилди алмаштырууга убакытты текке кетирбөө үчүн колдоном:D)) Жаз бизге бардык нерсени жасай баштай турган башталыш берет. Бул- Маалыматтар базасы менен иштегиңиз келеби? Сиз мамилени каалайсызбы? Сиз мамилелерди каалайсызбы? Бул жерде биз Spring Data мененбиз.
- http сурамдары менен иштегиңиз келеби? Мына сага, Жазгы желе (Spring MVC).
- Сизге бир жерде бардык an objectтериңиз үчүн контейнер керекпи? Бул жерде Жаз өзөгү.
- Ар кандай ролдор жана буйрук чынжырчасы болушу үчүн долбоордо коопсуздукту орнотуу керекпи? Жазгы коопсуздук.
- Ушундай нерсе болсо жакшы болот деп ойлогондо, Жаздын сизге керектүү нерселери бар экен, ал тез жана оңой интеграцияланат.
SpringBoot ишке киргизилүүдө
Биз Maven эмне экенин түшүнгөндүктөн, келгиле, муктаждыктарыбыз үчүн жаңы долбоор түзөлү. Бул үчүн, сиз жөн гана бул маселе үчүн атайын түзүлгөн веб-сайтка барышыңыз керек. Бул жазгы Initializr деп аталат . Бул жерде сиз толтуруп, керектүү нерсени тандап алышыңыз керек:- Долбоорду куруу куралы gradle же maven болуп саналат. Көрүнүп тургандай, кумурсканын аты да жок. Бул кайсы куруу куралдары убактыңызга татыктуу экени жөнүндө жакшы ишарат.
- Сиз жаза турган тил - java, kotlin, groovy. Бул жерде баары жөнөкөй: алардын баары JVM сыяктуу жана Java codeун оңой иштетет. Айтмакчы, бул Котлинди карап чыгуу керек. Groovy чындыгында кызыксыз болуп калды (бир кезде алар пазалга өтүп кеткен, бирок ал бат эле өтүп кеткен).
- Жазгы version... Бул жерде Жаздын негизги бөлүгүнүн versionлары жана анын модулдары ырааттуу экенин түшүнүү керек.
- Долбоордун маалыматтары. Мен буга чейин бул нерселерди сүрөттөгөн.
- Кайсы архив чогултулаарын тандайбыз - Жар же Согуш.
- Ооба, биздин сүйүктүү Java versionсы. Ал эми акыркы убакта мындай versionлар көп болду... Жылдап күтүштү, эми жылына эки болуп жатат.
- Maven - бул жөнүндө биз сиз менен мурда сүйлөшкөнүбүз бекер эмес.
- Java биздин сүйүктүүм: D
- 2.2.11 versionсын алалы. Эмне үчүн эң жаңысы эмес? Анткени ал канчалык жаңы болсо, анда мүчүлүштүктөр болушу мүмкүн. Биз үчүн кайсы version маанилүү эмес, бирок эскиси ишенимдүүраак болот. Ошондуктан, биз 2.2.11 тандайбыз.
- Группа: com.github.javarushcommunity
- Артефакт: springboot-flyway-демо
- Аты-жөнү: SpringBoot + Flyway Demo
- Description: Долбоор SpringBoot жана Flyway ортосундагы интеграцияны көрсөтөт . (Ооба, documentтерди жазуу жөндөмү өнүгүүнүн маанилүү бөлүгү :))
- Пакеттин аталышы: com.github.javarushcommunity.springbootflywaydemo . Бул жерде алар дароо биздин колдонмону ишке киргизе турган класс менен биз үчүн негизги пакетти түзүшөт.
- Таңгактоо: Jar
- Ява: 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/ . Анда өлкө tableсын түзөлү. Келгиле, маалымат базасы жөнүндө экинчи макаладан сценарийди алалы . Баштоодон мурун, кириңиз жана жумуш үчүн маалымат базасын түзөлү: flyway_demo_db. Муну MysqlWorkbench аркылуу жасайлы: Эми биз негизги ыкманы кайра иштетсек болот: Баары ойдогудай болду, бирок бизде долбоордо азырынча эч нерсе жок болгондуктан, ал иштеп бүттү. Бирок, журналдардан ( журналдардын эмне экенин окуп чыгыңыз ) көрүнүп турат:
- Маалыматтар базасына ийгorктүү туташты.
- Миграция тастыкталды жана баары жакшы.
- Flyway миграцияны башкаруу үчүн tableны түздү.
- Ал эми 00001 кандай миграция башталды - өлкөнүн түзүлүшү ийгorктүү болду.
Корутунду
Бул жолу биз SpringBoot менен бирге маалымат базасын көчүрүү куралын кантип түшүнүүнү жана колдонууну үйрөндүк. Бул маалымат Flyway үлгүсүн колдонуп, маалымат базасынын versionсын башкаруу куралы эмне экенин түшүнүү үчүн зарыл. Достор, мен көрсөткөн долбоордун баштапкы codeу Github сайтында биздин уюмда жарыяланган . Эгер сизге мисал жакса, ага жылдыз бериңиз , ошондо мен менин ишим пайдалуу жана улантууга татыктуу экенин түшүнөм. Салт боюнча, мен өзүмдүн Github аккаунтума жазылууну сунуштайм . Ал аркылуу мен ачык булак боюнча бардык ишимди жана менин макалаларымды дайыма коштоп жүргөн бардык демо-долбоорлорду жүргүзөм. Окуу үчүн баарына рахмат. Кийинки жолу арызыбызды жазабыз. Келечекте Докерде керектүү теория болот, бирок биз аны практика менен катуу суюлтабыз.пайдалуу шилтемелер
Бүгүнкү күндө көптөгөн пайдалуу шилтемелер жок. Евгенийдин видеосуна көңүл буруңуз, бул чындап эле татыктуу!- Жазында долбоорлорду түзүү үчүн сайт
- Евгений Борисов — Жазгы куруучу
- Flyway үчүн жазында documentтер
GO TO FULL VERSION