Czytam o NHibernate. Jest w nim coś takiego jak ISessionFactory. Piszą, że to jest niezmienna (niewłaściwa) pamięć podręczna. Ja jednak tego nie rozumiem. Co to znaczy, że pamięć jest niezmienna? że nie można zmienić jej wielkości czy że nie można zmienić jej zawartości? to drugie wydaje mi się bez sensu.
- Rejestracja:ponad 13 lat
- Ostatnio:ponad rok
- Postów:684
- Rejestracja:prawie 15 lat
- Ostatnio:2 dni
Myślę, że chodzi o to, że ISessionFactory jest immutable.
Tutaj więcej szczegółów:
https://en.wikipedia.org/wiki/Immutable_object
Immutable objects are also useful because they are inherently thread-safe.[2]
- Rejestracja:ponad 10 lat
- Ostatnio:5 miesięcy
- Lokalizacja:Warszawa
- Postów:3573
Rozumiem że czytałeś to po polsku?

- Rejestracja:około 17 lat
- Ostatnio:około 11 godzin
- Lokalizacja:Wrocław
finito napisał(a):
Czytam o NHibernate. Jest w nim coś takiego jak ISessionFactory. Piszą, że to jest niezmienna (niewłaściwa) pamięć podręczna. Ja jednak tego nie rozumiem. Co to znaczy, że pamięć jest niezmienna? że nie można zmienić jej wielkości czy że nie można zmienić jej zawartości? to drugie wydaje mi się bez sensu.
Ale gdzie tak piszą? Jakieś źródło, cytat? Bo tak ogólnie to napisanie czegoś takiego w kontekście ISessionFactory nie ma sensu z wielu powodów - zaczynając od tego, że to interfejs, więc nie zawiera żadnych danych, które mogłyby się zmieniać, poprzez to, że jego celem jest tworzenie sesji, więc też nie operacja na którą jakaś "niezmienność" miałaby wpływ.
SessionFactory zawiera z drugiej strony cache drugiego poziomu - no ale znowu jego zmienność zależy od tego, co programista robi.
To, co się nie zmienia podczas życia SessionFactory to wczytana konfiguracja, ale chyba nie o to chodziło.
Tak więc bez dokładnego cytatu można sobie tylko zgadywać.

- Rejestracja:około 17 lat
- Ostatnio:około 11 godzin
- Lokalizacja:Wrocław
"A threadsafe (immutable) cache of compiled mappings for a single database." - no i wszystko jasne, jednak chodzi o niezmienność mapowań dla bazy. (Czyli to, co wyżej nazwałem konfiguracją.)
Warto czytać całe zdania.

- Rejestracja:około 17 lat
- Ostatnio:około 11 godzin
- Lokalizacja:Wrocław
@finito: masz rację, zawartość bazy zmieniana jest cały czas. Ale mapowania nie mają związku z zawartością tylko ze strukturą i opisują jak struktura tabel jest zamieniana przez NHibernate na obiekty C#. I to ta konfiguracja mapowań jest niezmienna w SessionFactory.
- Rejestracja:ponad 13 lat
- Ostatnio:ponad rok
- Postów:684
somekind napisał(a):
@finito: masz rację, zawartość bazy zmieniana jest cały czas. Ale mapowania nie mają związku z zawartością tylko ze strukturą i opisują jak struktura tabel jest zamieniana przez NHibernate na obiekty C#. I to ta konfiguracja mapowań jest niezmienna w SessionFactory.
Ahaaaaaaa, czyli dokładnie tak, jak przeczuwałem, tylko nie miałem pewności. Jednak popularność tego rozwiązania też nie jest dla mnie zbyt zrozumiała, bo przecież może się zawsze zdarzyć, że strukturę bazy także trzeba zmienić, choćby dlatego, że osoba tworząca tę strukturę jest omylnym człowiekiem i może popełnić błąd. Co wtedy z owym immunity?
- Rejestracja:ponad 13 lat
- Ostatnio:ponad rok
- Postów:684
Okej, ale jak poprawić mapowanie, skoro dla mapowania istnieje coś takiego jak immunity? Jak zmienić mapowanie, skoro obiekt mapowania jest niezmienny? To po co to całe immunity oraz do czego ono się tak na prawdę odnosi, skoro mapowanie możemy zmienić.
scibi92