Lucynko gdzie są moje klucze cz. 2 – dbanie o indeks

W drugiej części postu na temat Zend_Search_Lucene miałem zamiar napisać na temat metod wyszukiwania dokumentów, jednak dostałem wiele zapytań na temat metod dbania o indeks (kasowania oraz edycji dokumentów), jak się okazuje nie jest to do końca proste zadanie, choć mam nadzieje, że po przeczytaniu tego wpisu okaże się to prostsze niż wyglądało na początku. Continue reading ‘Lucynko gdzie są moje klucze cz. 2 – dbanie o indeks’

Hibernate nie chce zapisać rekordu w bazie? Problem z BatchUpdateException

Podczas pracy z Hibernatem oraz bazą PostgreSQL napotkałem się na dziwny błąd podczas wykonywania zapytania INSERT do bazy danych.
Gdy wysyłałem dane do bazy wyskakiwał poniższy błąd:

org.hibernate.exception.ConstraintViolationException:
Could not execute JDBC batch update

root cause

java.sql.BatchUpdateException:
Zadanie wsadowe 0 insert into public.user
    (name, password, email, login, sureName, registerDate, payback, id) values ...

Rozwiązaniem/obejściem problemu jakie znalazłem jest wstawienie w pliku konfiguracyjnym hibernate-a (hibernate.cfg.xml) linijki:

<property name="hibernate.jdbc.batch_size">0</property>

Dzięki temu wszystko zaczęło ładnie działać, minusem jest zmniejszenie wydajności w obsłudze bazy danych, od teraz zapytania do bazy będą wysyłane pojedynczo a nie w grupie.

Jak ktoś zna lepsze rozwiązanie, z chęcią je poznam.

IntelliJ i wsparcie dla frameworków + baza danych

W poprzednim wpisie stworzyłem podstawowy projekt, nie posiada on żadnego kodu, bibliotek więc pora to nadrobić. Tym razem dodamy obsługę frameworków Spring oraz Hibernate a przy okazji zrzucimy schemat bazy danych do plików POJO (Plain Old Java Object – klasy czysto javove). Dzięki wsparciu dla wielu technologii IntelliJ Idea potrafi bardzo sprawnie podpowiadać składnię plików konfiguracyjnych, generować pliki, czy też ściągać odpowiednie biblioteki.

Żeby aplikację pisało się szybko i wygodnie warto dodać do projektu wsparcie dla frameworków. Aby to zrobić wystarczy wywołać okno “Framework Support” dostępne w menu projektu pod opcją “Add framework support

W poprzednim wpisie stworzyłem podstawowy projekt, nie posiada on żadnego kodu, bibliotek więc pora to nadrobić. Tym razem dodamy obsługę frameworków Spring oraz Hibernate a przy okazji zrzucimy schemat bazy danych do plików POJO (Plain Old Java Object – klasy czysto javove). Dzięki wsparciu dla wielu technologii IntelliJ Idea potrafi bardzo sprawnie podpowiadać składnię plików konfiguracyjnych, generować pliki, czy też ściągać odpowiednie biblioteki. Continue reading ‘IntelliJ i wsparcie dla frameworków + baza danych’

Grails i błąd native2ascii

Podczas zabaw z Grails spotkałem się z pewnym problemem, na moim serwerze podczas próby uruchomienia prostej Grails-owej aplikacji wyskakuje błąd:

Error executing script RunApp: : Error starting Sun's native2ascii:
gant.TargetExecutionException: : Error starting Sun's native2ascii:

Problem sprawia funkcja native2ascii konwertująca pliki zapisane w natywnym kodowaniu do kodowania UTF, aby pozbyś cię tego błędu wystarczy edytować plik Config.groovy znajdujący się w folderze twoj-projekt/grails-app/config.

Odnajdujemy tam linie:

grails.enable.native2ascii = true

i zamieniamy ją na:

grails.enable.native2ascii = false

Problem rozwiązany.

InteliJ Idea – importowanie schematu bazy do Entity Beans

Czasami nachodzi nas ochota aby zamiast mozolnego wpisywania z ręki entity beans-ów lepiej użyć specjalnego importera, jakkolwiek w NetBeans oraz Eclipse jest on dostępny od ręki, tak w InteliJ Idea z niewiadomych względów został schowany przed ciekawskimi oczami.

Jeśli chcemy wygenerować sobie takie pliki, musimy w zakładce Pojects wybrać z listy “View as:” element “Java EE Structure

Wybór widoku struktury JavaEEGdy już to zrobimy, należy przejść w gałęzi JPA Faces do PersistenceUnit i zaznaczając ją wywołać menu kontekstowe, na samym końcu będzie szukana przez nas opcja Generate Persistence Mappin.

Plik PersistenceUnit który trzeba zaznaczyć

W oknie które się pojawi możemy stworzyć nowe źródło danych, a przy okazji zaimportować schemat bazy do naszych Entity Beans-ów.

Okno generowania mapowania bazy danych

Okno generowania mapowania bazy danych

Google Java App Engine – pierwsze starcie

Jak zapewne wszyscy wiedzą, i jak pisałem w poprzednim wpisie, Google udostępniło w swoim App Engine obsługę języka Java. W tej chwili jest to wersja beta (dla 10k programistów którzy mieli refleks) ale niebawem wystartuje pełna wersja. Wraz z obsługą Javy Google udostępniło swoją bibliotekę JDK oraz plugin do eclipse.

Swoją przygodę z Java App Engine najlepiej rozpocząć od przeczytania poradnika który pokaże nam jak rozpocząć projekt, uruchomić go lokalnie a także wysłać na serwery Google. Continue reading ‘Google Java App Engine – pierwsze starcie’

Spring – część 1. – tworzenie projektu

No to czas zabrać się do projektu.
Na początek tworzymy nowy projekt, w tym celu z menu InteliJ wybieramy File -> New Project. W oknie które się pokaże wybieramy “Create project from scratch” i idziemy dalej. Continue reading ‘Spring – część 1. – tworzenie projektu’

Kawa podczas dłubania w silniku google – appengine dla javy

Dzisiejszego dnia Google ogłosiło wsparcie dla nowego języka w ich produkcie App Engine. Tą nowością jest wsparcie dla Javy, co na penwo ucieszy rzesze programistów, gdyż jest to jedna z niewielu darmowych form prezentowania swojej javovej twórczości online. Co prawda mamy dostępne takie serwisy jak Mor.ph, czy też Stax.net jednak pierwszy dostępny jest za darmo tylko jako platforma developerska (jeśli przestajesz wrzucać nowe buildy zawieszają aplikacje), natomiast stax prawdopodobnie będzie udostępniany odpłatnie.  Java SDK w App Engine udostepniana jest jeszcze w formie Early Look (beta), więc na razie zalecam jedynie testowanie. Więcej informacji znajdziecie na wpisie blogowym google app engine.

Przed chwilą dostałem maila od Google, witają mnie w “early look at Google App Engine for Java!”.

Projekty javove – Wybór narzędzi

Choć stworzenie dużego javovego projektu jest możliwe w zwykłym notatniku (pomijając kompilację oraz serwer obsługujący) jest to raczej mało wygodne a na pewno nie wydajne. Do tej pory zazwyczaj używałem NetBeans-a jako, że głównie piszę aplikacje desktopowe. Jednak do tego zadania potrzebuję czegoś więcej tak więc mój wybór padł na: Continue reading ‘Projekty javove – Wybór narzędzi’

Ostatnia prosta na uczelni – zaczynam 2 duże projekty magisterskie

Moja nauka na studiach wyższych powoli się kończy, czas przystąpić do pisania pracy magisterskiej. Jako tematy wybrałem sobie zagadnienia wydajności oraz bezpieczeństwa, a także metody planowania i produkcji aplikacji oscommerce (tak mniej więcej przedstawia się mój temat).

Jest to typowo projektowa praca z elementami opisowymi. Jako projekt napiszę dwie aplikacje, pierwsza z nich będzie w JavaEE. Będzie to sklep internetowy oparty o SpringFramework, Hibernate, a jako warstwy prezentacyjnej użyję bibliotek SiteMesh (reszty bibliotek i technologii na razie nie ujawniam). Druga aplikacja oparta będzie o NetBeans Platform i służyć ma obsłudze sklepu (dodawanie oraz aktualizacja oferty, pobieranie zamówień, obsługa magazynu). Continue reading ‘Ostatnia prosta na uczelni – zaczynam 2 duże projekty magisterskie’