Zanim użyjesz projektu open-source, upewnij się, że nie został porzucony

Do użycia ORM-a przekonał mnie znajomy. W założeniu: super. Nie będę się rozpisywał czym jest ORM i jakie funkcjonalności ma spełniać – na pewno jest to wielokrotnie opisane przez bardziej kompetentnych w tym zakresie ludzi. Dość powiedzieć, że dzięki temu korzystam z natywnych klas reprezentujących dane, np.:

class PostData
{
    @Generated @Id int id;
    Post post;
    string title;
    string markdown;
    string excerpt;
    Nullable!string gpg;
    DateTime timestamp;
    @ManyToMany Tag[] tags;
}

Pobieżne sprawdzenie dostępnych bibliotek w D zaowocowało znalezieniem hibernated. Niestety, cechują go przypadłości jednoosobowego projektu open-source (które zapewne będą w przyszłości równie prawdziwe skierowane ku Pierunowi):

Dokumentacja jest słaba. Readme ze strony głównej się nie kompilował, a po poprawkach zapewniających kompilację nie przechodził własnych assertów. Niezrażony początkowymi trudnościami, naprawiłem je (w trakcie pisania tego tekstu PR wciąż wisi, ciekawe czy i kiedy będzie jakakolwiek odpowiedź), i rozpocząłem implementację bloga.

Niestety, następnym problemem, na który natrafiłem jest niedziałająca adnotacja @ManyToMany. Pomimo kilku dni intensywnej męki nie byłem w stanie jej naprawić. Przyczyną głównie jest nieznajomość projektu, słaba znajomość języka i, być może, średnia jakość kodu. Jak widać, informacja o błędzie jest na GitHubie już od kilku miesięcy, ale nistety poprawek nie ma.

Dziwnym zbiegiem okoliczności, gdy już miałem się poddać i wrócić do oryginalnego planu (operowanie bezpośrednio na PGSQL), odkryłem obejście mojego problemu: użycie LazyCollection!T zamiast T[] dla pól połączonych @ManyToMany.

Leave a Reply

Your email address will not be published.