Uložení objektu do souboru/databáze – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Uložení objektu do souboru/databáze – Java – Fórum – Programujte.comUložení objektu do souboru/databáze – Java – Fórum – Programujte.com

 

ondra
~ Anonymní uživatel
244 příspěvků
19. 11. 2014   #1
-
0
-

Zdravím,

potřebuju naprogramovat třídu, které předám objekt (který reprezentuje jeden záznam z databázové tabulky) a objekt se uloží do databáze/souboru. Potřebuju aby třída přijímala jakýkoliv objekt a byla schopna si sama přečíst jeho atributy sestravit insert dotaz a poslat na databázi.

Např.

class Client{

public int id;

public String jmeno;

}

class Database{

public void Uloz(Object o)

{

// tady potřebuju umět přečíst všechny atributy objektu který sem příjde, Třeba výše uvedené třídy Client

}

}

Nahlásit jako SPAM
IP: 62.168.31.–
NotBeginner
~ Anonymní uživatel
185 příspěvků
20. 11. 2014   #2
-
0
-

No a v čem je problém? Nebo si snad myslíž že za tebe budeme dělat domácí úkol?

- Nastuduj si proudy vč. Serializace ( pro ukládání do souboru )

- Nastuduj si JDBC(případně JPA) a vyber si databazi ( pro ukládání do databáze)

"Potřebuju aby třída přijímala jakýkoliv objekt" - zkus využít dědičnost, třeba to bude fungovat či ukládat java.lang.Object

Nahlásit jako SPAM
IP: 217.112.161.–
ondra
~ Anonymní uživatel
244 příspěvků
20. 11. 2014   #3
-
0
-

Serializaci umím a uložení do databáze taky umím.

Ale nevím jak získat atributy objektu. Vždy se budou jmenovat jinak. Hodila by se mně nějaká metoda která by vrátila v poli všechny atributy včetně hodnot. Tak to mám v plánu si udělat, pokud mně nic neporadíte.

Ještě jednou popíšu můj problém. Do třídy Database metody insert můžu vložit objekt jakékoliv třídy, přičemž každá třída má uplně jiné atributy a nechce se mně programovat pro 100 různých tříd 100 získávání atributů. Existuje nějaký způsob jak univerzálně naprogramovat získávání všech atributů daného objektu?

(prosím o odpovědi bez arogance)

Nahlásit jako SPAM
IP: 62.168.31.–
sleepy
~ Anonymní uživatel
422 příspěvků
20. 11. 2014   #4
-
0
-

Na toto su cele api, preco to chces pisat na novo? Ak tak chces skus reflexiu. https://docs.oracle.com/javase/7/docs/api/ . Vytiahni si fieldy, zmen im acessibility a zapisuj do nich, alebo z nich citaj. Ale ako hovorim pisat si to sam je uplne zbytocne.

Nahlásit jako SPAM
IP: 158.195.201.–
Kit+15
Guru
20. 11. 2014   #5
-
0
-

#3 ondra
Však si tu serializační a deserializační metodu dej přímo do té třídy, jejíž instance budeš chtít ukládat. Je to standardní přístup ve stylu OOP. Měly by se jmenovat ve všech třídách stejně, např. serialize().

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
20. 11. 2014   #6
-
0
-

#4 sleepy
Nevýhodou tvého přístupu je, že tím zbytečně narušíš zapouzdření objektu.

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
p3can
~ Anonymní uživatel
312 příspěvků
20. 11. 2014   #7
-
0
-

#5 Kit
Mozna tak "standartni pristup" ve tve vizi ...

#3 ondra
To co hledas se menuje ORM. V jave napr. Hibernate.

Nahlásit jako SPAM
IP: 62.209.223.–
Kit+15
Guru
20. 11. 2014   #8
-
0
-

#7 p3can
Ano, "standardní postup" ve tvé vizi je udělat všechny atributy public přes nejrůznější gettery a settery a pak se v tom rochnit.

A vlajky nám sem do toho nepleť.

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
20. 11. 2014   #9
-
0
-

#7 p3can
ORM je přece jen berlička pro programátory, kteří neumí SQL.

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
ingiraxo+15
Grafoman
20. 11. 2014   #10
-
0
-

Taky se vám do toho vložím ^.^

Používat Hibernate na něco tak jednoduchýho je pitomost, denně s ním sice dělám, ale pokud je cílem pouze do jedné tabulky nebo pár tabulek ukládat a načítat data, tak je naprosto zbytečné používat poměrně velké nástroje jako Hibernate a HQL

Nepochopil jsem, jestli to chceš ukládat do DB nebo do souboru nebo do obou.. v každém případě pokud se jedná o soubor, tak buď ta serializace, která zde padla, nebo další možnosti (json, binarně, texták,...) potom musíš ofc. udělat vlastní wrapper.. opět záleží na okolnostech, ale nejméně pracné je serializace

Co se týče serializace a teď se to trochu týká i pro DB, tak každý objekt, který bude reprezentovat Db tabulku by měl mít společného předka, který bude jednak mít metody pro serializaci, tak získání třeba ID záznamu z tabulky (getter).(řekněme třeba interface Entity)

Pokud se jedná o databázi, tak je zde více možností..
1) bud přes reflexi s tím, že každý getter bude představovat sloupec v tabulce. Zde bude potřeba ale mapování na název sloupce, což můžeš zajistit nějakým vlastním mapperem pro každou entitu
2) nebo lepší řešení - přes anotace, kde bude i mapování na sloupec (a opět reflexí)

samozřejmě je potřeba mít lepší znalosti s OOP, bude zde více pracovat generika a ověřování entit, pokud to chceš mít univerzální

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

Podobná vlákna

Uložení objektu — založil ghoull

Uložení obrázku do databáze — založil cloudyer

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý