Předně děkuji za reakci.
Také používám klíč, ale nejsem si jistý, zda by nebyl lepší nějaký kód. 
Pokud se klíč změní např. na složený klíč, promítne se změna do celé 
aplikace (to je asi to nejmenší), klíč je nějaké "náhodně "vygenerované 
číslo (na které pak vážu logiku aplikace), které se musí udržovat na všech 
instancích stejné (jak jste také zmínil) a které nic neříká o vlastním 
zpracování, pokud by se použil kód, může se několik typů zpracovávat stejným
způsobem - dle kódu, zpracování se může měnit - např. se prohodí způsob 
zpracování u dvou typů apod., dále může kód být např. nějakou kombinací 
zpracování u čísla  - co bit, to nějaký způsob apod.
Takže váhám.
Ale děkuji za reakci

Používám Hibernate a k dotahování typu (resp. ekvivalentu) stejně dochází, 
takže "join" navíc už tam je.


---------- Původní zpráva ----------
Od: Ondra Medek <xmed...@gmail.com>
Komu: Programovací jazyk JAVA <konference@java.cz>
Datum: 17. 4. 2015 14:39:17
Předmět: Re: dotaz - Java - DB objekty

"







Ahoj,

jestli to dobře chápu, pak Type je nějaký číselník


public class Type {

    long id; // umely klic

    String code; // prirozeny klic
}


Tedy jde o to, jestli kód větvit podle umělého klíče nebo přirozeného. V 
praxi jsme se setkal s oběma přístupy:



- větvení podle umělého klíče "id" - nemusí se načítat záznam Type, stačí 
mít Record.type_id. Je ale potřeba zajistit stejný umělý klíč na všech 
prostředích (vývoj, test, produkce). Což může být někdy trochu problém.

- větvení podle přirozeného klíče je více robusní, není zde problém se 
synchronizací prostředí. Ale musí se načítat (join, select navíc) i z 
tabulky typu. Případně se načítání dá vyhnout použitím cache (Hibernate 2nd 
level cache).



Já bych spíše použil přístup přes přirozený klíč s využitím Hibernate 2nd 
level cache. Většinou dávám do aplikace nějaké tlačítko pro administrátora 
pro mazání Hibernate 2nd level cache pro administrátora pro případ, kdy se 
DB tabulky mění mimo aplikaci.










Ondra Medek




2015-04-17 12:41 GMT+02:00 Miroslav Paulfranc <paul...@seznam.cz
(mailto:paul...@seznam.cz)>:
"
Zdravím všechny přítomné
Měl bych spíše obecnější dotaz, který nesouvisí pouze s Javou, nicméně 
předpokládám, že i při psaní kódu v Javě podobnou věc velmi často řešíte.

Dejme tomu, že máte databázové objekty, u kterých chcete nějaké číselné 
identifikátory (autoincr., identity..,) a máte např.nějaký objekt typu
Record a ten je nějakého typu, např. Type, takže databáze s 2 tabulkami 
Record a Type (přičemž každý záznam typu Record má referenci na Type).

Pak chcete záznamy typu Record v aplikaci nějak zpracovávat podle toho, 
jakého jsou Typu.
Máte např. nějaký přepínač (switch(...)), který něco dělá s Recordem podle 
jeho Typu.

Používáte v přepínači klíč Typu, nebo si vytváříte nějaké speciální pole 
(něco jako TYPE_CODE), podle kterého pak záznamy v aplikaci zpracováváte?
Tj. v přepínači nebo nějakém if-u bude if(type.getId()==něco) , nebo radši 
použijete nějaký k tomu určený atribut?

Napadají mě důvody pro použití i nepoužití prvního i druhého způsobu; máte 
prosím někdo nějaký tip, proč preferovat přístup s klíčem nebo nějaký jiný 
přístup, ideálně odkaz na nějaké články, které by se tímto zabývali, 
případně jak to řeší nějaké "populární" aplikace?

Předem děkuji za tipy.

S pozdravem
M.Paulfranc



"



"

Reply via email to