Wpis z mikrobloga

@Nofenak: czasem jest to lepsze niż robić 10 zapytań. Zależy od sytuacji. Ale na pewno to nie jest antywzorzec, po prostu w konkretnych sytuacjach jest to brudne rozwiązanie.

Gdyby to był tak po prostu antywzorzec to byś nie implemtowal nawet listy dwukierunkowej, albo drzew z referencja do węzła, a to podstawowe i powszechnie używane struktury.
Po prostu używaj tego z głową i nie nadużywaj.
@Nofenak: jak będziesz mial sytuację, ze znasz commentId, a potrzebujesz PostId to raczej się moze przydać. Chociaż tak naprawdę to miałbyś raczej 3 tabele, gdzie jedna to taki łącznik pomiędzy tymi dwoma - oczywiście nie mając postId w comment tez wyciągniesz do jakiego posta nalezy, tylko wtedy querka będzie cięższa. Wiec imho @TurboDynamo turbo dobrze napisał
@TurboDynamo: lista dwukierunkowa to struktura powszechnie używana na rekrutacjach. W realnym oprogramowaniu niemal nigdy nie jest właściwą strukturą. Lista dwukierunkowa ma fatalną charakterystykę wydajnościową i niemal zawsze zwykły wektor / tablica są lepsze.
@Nofenak: Nie powiedziałbym że jest to antywzorzec. Niektóre ORM-y jak NHibernate wymagają takiej relacji aby poprawnie zmapować encje biznesowe na obiekty w bazie danych. Przy zapisie danych nie powinno to być problemem, problem pojawia się przy odczytach, zwłaszcza gdy masz dużo obiektów w kolekcji i włączony eager loading.
@TurboDynamo: xD a ja raczej widzę że mam do czynienia ze studentem świeżo po algorytmach i strukturach danych prowadzonych przez profesora, który ostatni swój program napisał 20 lat temu i nie ma zielonego pojęcia o architekturze współczesnych procesorów. Bo jakby miał pojęcie to listy dwukierunkowe omawiałby jedynie jako ciekawostkę historyczną.
@Krolik: Przy CQRS-ie gdzie masz osobne stosy Read (raw SQL/micro ORM) i Write (full ORM) dają radę. Zapisów zwykle jest mniej niż odczytów i wymagania odnośnie wydajności nie są tak krytyczne. W dodatku zapisy w przeciwieństwie do odczytów można obsłużyć asynchronicznie i user nie musi czekać na odpowiedź z serwera, można mu zrobić push z informacją czy operacja się powiodła czy nie.
@markaron: pisalem o ORM w stylu Hibernate, nie micro-ORM czy idei ORM w ogólności. Toole do szybkiej konwersji rowków bazodanowych na płaskie structy, najlepiej działające na etapie kompilacji (czyli bez refleksji runtime) są bardzo użyteczne i zarazem proste koncepcyjnie. Natomiast ORM który próbuje mapować całą bazę na jeden graf obiektów zwykle kończy się mega przekombinowaniem aplikacji i problemami wydajnościowymi.