Wykonywanie skryptu sql tylko raz przez aplikację webową

0

Witam

Wraz z kolegami stworzyłem mały webservice w javie i natknęliśmy się na następujący problem. Każdy ma swoją bazę danych lokalnie, ale jest ona też postawiona na serwerze. No i teraz jak zmienimy coś w bazie to jak zrobić, by każdy miał tą samą bazę (chodzi mi o kolumny, tabele ogólnie schemat).

Prawdopodobne rozwiązania problemu.

  1. Zapiąć aplikacje javy każdemu na serwer. Jest to niemożliwe ponieważ nasz webhosting oferuje dostęp do bazy tylko lokalnie, czyli tylko od strony aplikacji na serwerze. Mógłbym utworzyć bazę danych na jakimś innym hostingu, ale wydaję mi się to raczej niebezpieczne i znacznie zwolniło by działanie webservicu (aplikacja musiałaby się łączyć ze zdalną bazą zamiast lokalną). O wiele bardziej podoba mi się opcja druga.

  2. Pracowałem kiedyś w firmie, w której ten problem był rozwiązany następująco. Był plugin do mavena, który był skonfigurowany tak by podczas budowania aplikacji wykonywał wszystkie skrypty sql znajdujące się w danym folderze i pamiętał, które wykonał, by przy następnym budowaniu już ich nie ruszać. Było to moim zdaniem super rozwiązanie bo jak ktoś coś chciał zmienić na bazie to po prostu wrzucał skrypt do tego folderu pushował na repo. I podczas budowania aplikacji zarówno jemu, każdemu z programistów i na serwerze wykonywał się skrypt także każdy korzystał z tej samej bazy. Niestety nie mogę znaleźć tego plugina ani konfiguracji. Również nie znalazłem nigdzie w google, by ktoś borykał się z podobnym problemem co wydaję mi się dziwne. A może da się to zrobić jakoś w Springu? Jeśli nie będę musiał sam to napisać w javie, jak to zrobić?

1

Może chodzi Ci o Liquibase (ma plugin do mavena). Jest też najprostszy przypadek ustawić opcję ddl-auto, np: spring.jpa.hibernate.ddl-auto=update. Jeśli inna osoba zmieni coś w encji to po pobraniu najnowszej wersji z Gita i uruchomieniu baza danych zostanie zaktualizowania na podstawie encji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1