Jeszcze raz o kluczach naturalnych

Tym razem w kontekście wydajności. Jednym z zarzutów podnoszonych przy okazji dyskusji o kluczach naturalnych opartych o typ tekstowy jest wydajność. Można by się spierać czy klucz sztuczny oparty o typ INT jest lepszym rozwiązaniem niż klucz oparty o typ VARCHAR/CHAR/TEXT. Takiego sporu jednoznacznie rozstrzygnąć nie można. Warto jednak przyjrzeć się argumentacji dotyczącej wydajności. By […]

Prosty helper do ładowania danych

Czasami potrzebujemy w ramach testów na szybko wrzucić coś do bazy danych. Jeżeli korzystamy z DBUnit to mamy kilka opcji – XML, CSV, Excel… Jeżeli nie chcemy tworzyć plików zawsze możemy użyć DefaultDataSet i ręcznie wypełnić go danymi. Jest to wygodne rozwiązanie jeżeli mamy mało danych albo nie chcemy utrzymywać dodatkowych plików. minusem jest dość […]

Active Record z Google Guice i JPA cześć II

W pierwszej części pokazałem jak powinna wyglądać standardowa encja oraz konfiguracja modułu. W tej części będzie trochę teorii co powinna dostarczać klasa SelfManagedEntity. Active Record Wzorzec projektowy Active Record ma swoje korzenie w kartotekowych bazach danych. Dokładnie w ich implementacjach z lat 70tych kiedy ktoś wymyślił, że pracując na rekordzie warto mieć metody typu save, […]

HSQLDB „znikające tabele”

HSQLDB nie jest traktowana jako baza „na produkcję”. Choć w pewnych specyficznych przypadkach świetnie sprawdza się jako podstawowy silnik RDBMS to zazwyczaj stosujemy ją tylko jako narzędzie do testów integracyjnych dla DAO. Ja trafiłem jednak na przypadek gdzie HSQLDB została wybrana jako główna baza danych dla produktu. Trafiłem też na ciekawy „feature” tego silnika. Otóż […]

Samozarządzające się encje – persist vs. merge

Chcąc zaimplementować prostą wersję wzorca ActiveRecord należy uzbroić się w cierpliwość. Szczególnie jeżeli chce się to zrobić z wykorzystaniem JSR-330 i Guice. Jednym z problemów przed jakimi staje osoba tworząca takie rozwiązanie jest decyzja czy encje powinny być zarządzane bardziej przez Guice czy bardziej przez JPA. Kluczowym elementem, który trzeba zrozumieć by dokonać wyboru jest […]

Prosty schemat bazy danych

Przy okazji zmiany płatnika ZUS pojawił się problem przekazania różnych moich projektów ludziom z zespołu. O ile większość rzeczy można przekazać od ręki to niestety niektóre wymagają dodatkowego szkolenia. Jako, że szkolenie na żywym kodzie nie jest najlepszym pomysłem ponieważ próg wejścia jest wtedy stosunkowo wysoki to trzeba przygotować oddzielne szkolenie „za rączkę i krok […]

O identyfikacji encji i lenistwie deweloperów…

Pewien czas temu natknąłem się na arcyciekawy wpis na blogu Michała Gruca. Sam wpis traktuje o tym, które metody z klasy Object należy nadpisywać i jak to robić w przypadku obiektów reprezentujących encje biznesowe. Jeszcze ciekawiej zapowiadała się dyskusja w komentarzach. Chcąc nawiązać do rozpoczętego wątku zaczętego przez Marcina Stachniuka czy używanie ID w metodach […]

Testowanie DAO w JPA 2.0 za pomocą DbUnit część 2

Malowanie zakończone sukcesem. Zatem czas na druga część problemu testowania klas DAO z użyciem DBUnit w środowisku z JPA 2.0. Bogowie, co za tytuł… ja powinienem z tego tytuł magisterki zrobić. Swoją drogą farba „Willow Creek 4” ma taki ładny kolor… jak przechodzące zestawy testów. Do rzeczy. W poprzedniej części postawiłem warunki jakie powinien spełniać […]

Vaadin jako klient webservice I: Przygotowanie projektu

Witam w pierwszej części przewodnika „Vaadin jako klient webservice”. W tej części zajmiemy się przygotowaniem projektu. Jest to ważny etap ponieważ pozwoli on nam na zrozumienie jak działa aplikacja oraz przy okazji poznamy pewne sztuczki związane z optymalizacją aplikacji Vaadin za pomocą Springa. Cały proces przygotowania można podzielić na kilka etapów. Przygotowanie pom.xml Dodatkowa konfiguracja […]

Po co Sun kupował MySQLa

Wszyscy się zastanawiali po kiego grzyba Sunowi taki MySQL. Co zrobić z produktem, który ma durną licencję, nie jest zgodny ze standardem SQL i w dodatku mamy do dyspozycji własne rozwiązania bazodanowe. Dziś rzuciłem okiem w spam, który regularnie podrzuca mi Sun. Zrozumiałem dlaczego kupił MySQLa i jaka będzie jego przyszłość. Otóż Sun będzie rozwijał […]