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...
- Rejestracja:prawie 20 lat
- Ostatnio:ponad 4 lata
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.
- Rejestracja:prawie 20 lat
- Ostatnio:ponad 4 lata
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 :)
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.
- Rejestracja:prawie 20 lat
- Ostatnio:ponad 4 lata
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);
}
)
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.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.