Re: JPA a Integer vs. BigInteger pro ID
Dne 29.10.2013 12:47, Ondra Medek napsal(a): Co za DB používáte, jaký je tam přesně datový typ pro ID? Viz původní otázka: konkrétně Hibernate + PostgreSQL … a datový typ v SQL je taky integer – 32 bitů
Re: JPA a Integer vs. BigInteger pro ID
Tak pokud jsi si jistý, že se ti tam nikde nepřimotal jiný typ, tak by Java Integer měl být OK, ale IMHO Long nic nezkazíš. (pro jistotu, do budoucna :-)). Co za DB používáte, jaký je tam přesně datový typ pro ID? konkrétně Hibernate + PostgreSQL ... a datový typ v SQL je taky integer - 32 bitů
Re: JPA a Integer vs. BigInteger pro ID
Ahoj, v historii mercurialu by měl být i autor změny ;-) Jinak je dobře možné, že změna byla bezdůvodná. Asi nějak tak, že autor pracoval třeba i na jiném projektu, kde bylo potřeba mít @Id typu BigInteger, tak pro jistotu a do budoucna tuto změnu provedl všude. Nebo třeba jen takovou radu vyčetl na nějakém blogu. Nebo mu takové Id vygenerovat Hibernate generátor, tak si řekl, že to musí být tedy správně, apod. Bohužel Hibernate je složitý nástroj a neexistují žádné jednoduché tutoriály typu todle nedělejte nebo todle dělejte jen výjimečně. A proto člověk udělá i řadu omylů, než např. zjistí, že na Id stačí Integer nebo Long (a nebo int, long?). Ondra Medek 2013/10/28 František Kučera konfere...@frantovo.cz Mám tu jeden projekt, který používá JPA (konkrétně Hibernate + PostgreSQL) a v historii jeho mercurialu jsem našel změnu datového typu primárních klíčů z Integeru na BigInteger. Bohužel tam nic víc napsané není. Anotace @Id by měla podle JavaDocu fungovat s oběma typy. A nezdá se mi, že by to někdo měnil jen tak bezdůvodně, zřejmě to bylo kvůli nějakému problému/incidentu. (jenže rozsah hodnot by měl bohatě stačit i u Integeru - a datový typ v SQL je taky integer - 32 bitů). Napadá někdo, co mohlo být důvodem? Díky, Franta
Re: JPA a Integer vs. BigInteger pro ID
Bohužel Hibernate je složitý nástroj a neexistují žádné jednoduché tutoriály typu todle nedělejte nebo todle dělejte jen výjimečně. A proto člověk udělá i řadu omylů, než např. zjistí, že na Id stačí Integer nebo Long (a nebo int, long?). Ahoj, pro objektové typy (Integer místo int) může být dobrý důvod – podle null se jednoznačně pozná, že ID ještě nebylo přiřazeno a nemusí se používat nějaké magické hodnoty jako 0 nebo -1. Ale co vedlo k tomu BigIntegeru je stále záhadou. Můžu to refaktorovat zpátky na Integer a pozorovat, co se rozbije, ale do toho se mi moc nechce… Franta
Re: JPA a Integer vs. BigInteger pro ID
Ahoj, na tom Integer vs. int jsem jen chtěl ukázat, že pro Hibernate chybí nějaký jednoduchý best practices. Někdo má dobrý důvod používat Integer, jiný má zase dobrý důvod používat int, a další se zase bude bít za BigInteger. Co za DB používáte, jaký je tam přesně datový typ pro ID? Nemohlo se stát, že se vysoké hodnoty toho SQL integer namapovaly do Javy špatně? Tedy bych zkusil najít extrémní hodnoty (jak + tak -) těch Id na produkci. Případně bych si takové hodnoty na vývojové DB udělat ručně. Pak bych převedl BigInteger na Integer, a testoval. A taky zkus Google např. MySQL integer to Hibernate Integer problem, apod. Ondra Medek 2013/10/29 František Kučera konfere...@frantovo.cz Bohužel Hibernate je složitý nástroj a neexistují žádné jednoduché tutoriály typu todle nedělejte nebo todle dělejte jen výjimečně. A proto člověk udělá i řadu omylů, než např. zjistí, že na Id stačí Integer nebo Long (a nebo int, long?). Ahoj, pro objektové typy (Integer místo int) může být dobrý důvod - podle null se jednoznačně pozná, že ID ještě nebylo přiřazeno a nemusí se používat nějaké magické hodnoty jako 0 nebo -1. Ale co vedlo k tomu BigIntegeru je stále záhadou. Můžu to refaktorovat zpátky na Integer a pozorovat, co se rozbije, ale do toho se mi moc nechce... Franta