Java, Apache Derby (embedded)

0

Hej! Mam do zrobienia na zlecenie program do dość prostej bazy danych z opcją wydruku...
Wybrałem technologię Java (NetBeans) i Apache Derby (chociaż nie mam w tej technologii dużego doświadczenia, bazy danych robiłem w PHP+MySQL, MS Access, i MS SQL Server, serializacja klas w C# i Java do pliku binarnego i XML, no pascalowe rekordy :) ).
Teraz mam pytanie do doświadczonych w tej kwestii, czy jest to dobry wybór? Baza będzie embedded (osadzona w pliku lokalnie). Czy Apache Derby jest dosyć bezproblemowe? Jak z przenoszeniem na inne komputery? Zależy mi na prostocie obsługi i przenośności i małych kosztach...
Być może C# + MS SQL Server Express było by lepszym rozwiązaniem, ale w przypadku Apache taką bazę łatwiej będzie przenosić pomiędzy komputerami... i łatwiejsza będzie w instalacji...

0

Ogólnie do podstawowych zastosowań bazodanowych Apache Derby wystarczy....Generalnie poczytaj sobie tutoriale do niego....

0

Może po prostu ktoś z szanownych użytkowników tworzył coś w Javie i używał bazy Apache Derby? :)

0

H2 Database jest nowocześniejsza i chyba przyuważyłem nawet ją używaną w firmie ;p

1

W sumie bez roznicy co uzyjesz. Derby ma ta zalete ze od Javy 5 czy tam 6 (a moze jeszcze wczesniej?) wchodzi w sklad JDK, wiec nie musisz nic instalowac. Ta bundlowana Java nazywa sie JavaDB i jest dostepna z katalogu $JDK_HOME/db. Ty jednak uzywasz embedded czyli bedziesz pakowal jary tak czy tak razem, wiec mozesz wybrac cokolwiek. Z tego co czytalem to H2 jest najnowsza - najszybsza - najlepsza. To jest iteracja 2 HSQLDB pisana przez tego samego kolesia o ile sie nie myle. Ja uzywalem wszystkich do testow i wiekszych roznic nie widzialem, ale Derby ma chyba dialekt ktory jest najspojniejszy z mainstreamowymi (oracle). Derby uzywamy w jednym projekcie dla wielkiego klienta (tak, przyzydzil na kosztach bazy danych) i dziala - nie ma zadnych zapytan do supportu co do wydajnosci.

0

Dzięki za info. No właśnie będzie to raczej baza typu embedded. Dużą zaletą jest Derby jest integracja z Javą i Netbeans... Zrobiłem jakiegoś prostego "selecta" i aplikacje konsolową w Netbeans... Natomiast mam pytanie, czy w Derby, można zmieniać lokalizację pliku (katalogu) z bazą danych. Np. jak stworzę program u siebie na komputerze i będę go chciał zainstalować u klienta... Czy trzeba zmienić jakąś właściwość property ? Jak wygląda w Derby wiązanie danych z kontrolkami GUI w Swingu? Dużo z tym roboty (pod tym względem C# i MS SQL Server Express wydaje się łatwiejsze) ?
Generalnie aplikacja jest dość prosta :

  • będzie zawierać 2 tabele (w relacji jeden do wielu)
  • dodawanie danych, usuwanie, modyfikacja, wyszukiwanie
  • wydruk z bazy danych w określonym formacie formularza-tabeli (tutaj użyje eksport danych sformatowany do HTML, wyświetlenie tego pliku w JEditorPane i wydruk)
  • przydał by się mechanizm transakcji
    Z góry dziękuje za odpowiedzi :)
0

Lokalizacje pliku definiujesz za pomoca URL: http://db.apache.org/derby/faq.html#db_name (i linki tam podane).
Co do laczenia ze swingiem sie nie wypowiem, bo swinga uzywam bardzo zadko i nie wiem jakie tam teraz sa standardy. Nie wiem tez czy nie lepiej dla ciebie uzyc JavaFX, ale i tak nie wiem czy to wspiera jakies latwe wiazania bazy z UI.

0

Ok, dzięki za info :) Jeszcze nie wiem czy dostane zlecenie na ten program ale wolałem wybadać grunt. Najwięcej zabawy będzie z wydrukami...
Trochę tabeli.... w ściśle określonym formacie. Podobno wydruki w Javie to był koszmar (nie wiem jak teraz jest). Wymyśliłem tak, mechanizm wydruku będzie taki :

  • odczyt wcześniej przygotowanego pliku w formacie HTML (określony format tabelki)
  • wypełnienie pliku HTML odpowiednimi danymi z bazy danych
  • zapis pliku do tymczasowego pliku HTML
  • wydruk pliku html (chyba najsprawniej to zrobić poprzez :
        File localFile = new File ("plik_temp.htm");
        Desktop desktop = Desktop.getDesktop();
        try {
            desktop.print(localFile);
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(this, ex.getLocalizedMessage(), "Bład", JOptionPane.ERROR_MESSAGE);
        }
 

)

1

Czyli musisz robic takie proste raporty. Moze przyjrzyj sie JasperReports czy czemus podobnemu - tam definiujesz raporty w XML (mozesz rowniez robic rozne transformacje na danych), jest program typu WYSIWYG do tworzenia wzorcow raportow (iReport). Dziala to mniej wiecej tak: masz wzorzec raportu, tworzysz data source (prosty interfejs do zaimplementowania, jest kilka gotowcow, np. JRResultSetDataSource), wypelniasz wzorzec danymi i mowisz jaki chcesz miec wynikowy format - tutaj do wyboru pdf, html, xls itp (niektore sa lepsze od innych, ja najbardziej lubie pdf) lub drukowanie. W necie znajdziesz kod ktory sie tym zajmuje, ot np. tutaj: http://jasperreports.sourceforge.net/sample.reference/printservice/index.html. Z doswiadczenia wiem ze dziala calkiem do rzeczy.

0

Ok, dzięki za info... :) W sumie Java nie jest taka toporna i "podstarzała" jak niektórzy uważają...:)

0

Jak bardzo złożone tabele do druku to może lepiej bazę zrobić w MS Access? Dla komputerów które, nie mają Accessa jest środowisko uruchomieniowe... Żeby móc korzystać z bazy danych....

1 użytkowników online, w tym zalogowanych: 0, gości: 1