Belépés
remind me!
Állást keresel?
Támogatás
Friss hozzászólások
hebrencs - Tue Aug 24 10:54:17 CEST 2010
DarkHcK - Wed Aug 18 11:27:46 CEST 2010
auth.gabor - Sun Aug 15 18:21:13 CEST 2010
(K)risztián - Sun Aug 15 17:38:14 CEST 2010
cimi - Sun Aug 15 11:41:01 CEST 2010
cimi - Sun Aug 15 11:23:45 CEST 2010
cimi - Sun Aug 15 10:51:00 CEST 2010
auth.gabor - Sun Aug 15 00:42:41 CEST 2010
Pannonjob Kft. - Fri Aug 13 14:43:48 CEST 2010
Pannonjob Kft. - Fri Aug 13 14:34:44 CEST 2010
Pannonjob Kft. - Fri Aug 13 14:26:37 CEST 2010
Pannonjob Kft. - Fri Aug 13 14:19:07 CEST 2010
Pannonjob Kft. - Fri Aug 13 14:12:06 CEST 2010
Pannonjob Kft. - Fri Aug 13 14:01:16 CEST 2010
Pannonjob Kft. - Fri Aug 13 13:32:06 CEST 2010
Pannonjob Kft. - Fri Aug 13 13:24:41 CEST 2010
Pannonjob Kft. - Fri Aug 13 13:12:43 CEST 2010
DarkHcK - Wed Aug 11 12:47:19 CEST 2010
JegFarkas - Mon Aug 09 16:24:35 CEST 2010
SL - Mon Aug 09 15:41:54 CEST 2010
Pannonjob Kft. - Mon Aug 09 15:29:34 CEST 2010
Pannonjob Kft. - Mon Aug 09 15:26:20 CEST 2010
Pannonjob Kft. - Mon Aug 09 15:22:36 CEST 2010
Pannonjob Kft. - Mon Aug 09 15:19:36 CEST 2010
Fórum - Java programozóknak
re: Hibernate is lehet JPA - xesj.hu - Tue Jan 26 16:04:44 CET 2010
"Ha JPA providerként alkalmazod és nem használsz olyan feature-ket amiket a Hibernate a szabványon felül kínál"

Node akkor meg van kötve a kezem, én meg szabad ember akarok lenni, és a Hibernate hátán repülni mint Potter ;-)
Hibernate is lehet JPA - tvik - Tue Jan 26 15:11:06 CET 2010
"A Hibernate perzisztencia providere a Hibernate :)), nem is lehet talán lecseréni"

A Hibernate-et használhatod JPA providerként és egyedi perzisztencia rétegként.
Ha JPA providerként alkalmazod és nem használsz olyan feature-ket amiket a Hibernate a szabványon felül kínál, akkor elvileg lecserélheted bármilyen más szabványos JPA provider-re.
re: to_date() - xesj.hu - Tue Jan 26 14:30:42 CET 2010
Outer join természetesen van a JPA-ban, de én a WITH kulcsszót hiányoltam (lásd 2 levéllel lejjebb az email címes problémát).

Itt olvashatsz a dátumot kezelő szabványos kifejezésekről:
http://www.hibernate.org/hib_docs/v3/reference/en-US/pdf/hibernate_reference.pdf
a 215-ös oldalon ír erről: second(...), minute(...), hour(...), day(...), month(...), and year(...)

A to_char(), to_date() valszeg Oracle specifikus dolgok és csak azért fogadja el a hibernate mert Oracle dialektust állítottam be neki. Amúgy vannak a Hibernate-nek jó dolgai, meg tudod mondani neki hogy van egy lpad() függvényed, melyre megesküszöl hogy tudja az adatbázisod, és innentől beírhatod a HQL lekérdezésbe (persze tudom hogy elveszítjük ezzel a kód hordozhatóságát, én viszont nem ezt tartom fontosnak). Ha adatbázist kell váltani akkor valamelyest át kell írni a HQL kódot. Mellesleg a WAR sem 100%-ban használható egyik appserverről a másikra áttéve. 

A Hibernate perzisztencia providere a Hibernate :)), nem is lehet talán lecseréni így azok az anomáliák sem fordulhatnak elő hogy az egyik providerrel megy az ami nem megy a másikkal. De ha nem megy akkor tényleg nem megy :)

Ami nem tetszett a hibernate-be hogy nem Java-szabvány, nem a java része, illetve nekem nem tetszik (de valszeg egyedül vagyok a véleményemmel) hogy vagy 20 jar-t kell használni hozzá. Ennek ellenére én őt hozom ki győztesnek.
to_date? - tvik - Tue Jan 26 13:38:30 CET 2010
JPQA-ban is lehet outer join-t csinálni.

Viszont ezek a to_date, to_char, year, month, day függvények biztos Hibernate függvények? Tudnál linket adni valami doksira amiben ezek benne vannak?

Egyébként nem akarok a JPA mellett kardoskodni. Ha nem fogod soha lecserélni a perzisztencia implementációt akkor a Hibernate valószínűleg tökéletes.
JPQL/HQL - xesj.hu - Tue Jan 26 12:38:44 CET 2010
Előszedtem a Hibernate-et, és megnéztem a problémáimra ott van-e megoldás, természetesen nem a natív query
lehetőségeivel hanem a sima egyszerű query-vel.
A dátumot szépen lehet kezelni ezek a példák mind működnek Hibernate-tel:
  select s, to_char(s.szuletett,'yyyy') from Szemely s where s.szuletett = to_date('2010.01.26','yyyy.mm.dd')
 
  select e, e.szuletett, year(e.szuletett), month(e.szuletett), day(e.szuletett)
  from Szemely e where year(e.szuletett) = 2010

  select year(e.szuletett), count(e)
  from Szemely e
  group by year(e.szuletett)
Ez meg az email-címes probléma megoldása:
  select s, e from Szemely s left join s.emailCimek e with e.address like '%@citromail.hu'
Én úgy gondolom hogy a JPA (de inkább a JPQL) még kiforratlan, el tudom képzelni hogy az lesz a jövő,
s egyszer felemelkedik a JPQL a HQL szintjére. Akkor érdemes lesz ismét elővennem és megvizsgálnom :)

Az is érdekes hogy olyan fórumon ahol JPQL-ről van szó, igen sok esetben a megoldás: használj natív query-t
A gyenge pontok - xesj.hu - Mon Jan 25 15:05:05 CET 2010
Sajnos a JPA-nak nagyon gyenge pontja a lekérdezés, pont ez az ami miatt nem fogom használni, a többi szépen működik.
Szóval sok baj van vele. Az egyik persistence provider megcsinálja azt amit meg kell,
pl. eclipselink megeszi a dátum mezőre a BETWEEN {d '1974-01-01'} AND {d '1974-12-31'}  ,a toplink hibát ad rá.

Az egy dolog hogy ezt így le lehet "kezelni", de egy csomó alapvető statisztika kell évekre bontva pl sql-ben:

SELECT to_char(datum,'yyyy'),count(*)
FROM valami
GROUP BY to_char(datum,'yyyy');

de a JPQL ilyesmit nem támogat (na jó natív query...).

Aztán nincs rendes outer join sem ! A hibernate ezt legalább megoldja, a lényeg WITH kulcsszó, JPA-ban ilyen viszont nincs.
Tehát tudomásom szerint ha egy embernek több email címe van akkor JPA-ban nem lehet megcsinálni ezt a lekérdezést:
minden ember szerepeljen a listában, mellette azok az email címeik amik citromail.hu végűek.
Mert ehhez az outer join WITH kulcsszava kell.

Aztán a toplink és eclipselink is hibázik akkor ha egy Entity olyan mezőjét kérem le ami boolean típusú, ez a probléma postgres esetén jön elő
pl: SELECT e.ferfi from Ember e
A vicc az hogy ez meg működik: SELECT e.ferfi, e.nev from Ember e

Én nem sokat foglalkoztam JPA-val de rögtön egy csomó problémába belefutottam, úgy érzem ez még csak a jéghegy csúcsa.

Megj: régebben foglalkoztam a Hibernate-tel, majd megnézem ott milyen támogatás van pl. dátum adattípusra.
Sajnos a Hibernate nem része a java-nak a JPA viszont igen, ez tetszett benne.
Datum String - (K)risztián - Mon Jan 25 15:04:59 CET 2010
Nem biztos hogy minden SQL szerver/JDBC driver képes a stringkent megadott dátumot kezelni. MySQL esetében pl több típusnál stringet adsz meg jól fogja kezelni, Ilyen a Dátum is. Szerintem is a JPA  erőssége a lekérdezés, én paraméteresen csinálnám a select-et és két DATE-t et adnék át
javax.ejb.EJBTransactionRolledbackException: missing title :) - tvik - Mon Jan 25 11:31:19 CET 2010
Egész biztosan dátum típusú a "szuletes" mező, nem String?

A JPA-nak nem gyenge pontja a lekérdezés, legalábbis nem ezen a szinten.
Adott évben születettek lekérdezése - vicziani - Sun Jan 24 20:42:54 CET 2010

Az első formátum nekem nem ismerős, de mi lenne, ha úgy próbálnád meg, hogy select e from Ember e where e.szuletes between :start and :end, és utána az elsőnek beállítanál egy jan.1. a másodiknál egy dec. 31 dátumot?

Adott évben születettek lekérdezése - xesj.hu - Sat Jan 23 00:16:19 CET 2010
Sziasztok !

Próbálnám magam beleásni a JPA-ba, természetesen nem az adat manipulációban rejlik a lényeg hanem az adatok lekérdezésében. Úgy vélem ez lehet a JPA gyenge pontja. Tegyük fel van egy Ember nevű Entity aminek van egy szuletes tagja ami Date típusú. Egy nagyon egyszerű dolgot szerettem volna (paraméter nélkül !), lekérdezni azokat akik pl. 1974-ben születtek. Már azt sem értem hogy miért nem működik a következő ami egy konkrét napra szürné le az embereket:
select e from Ember e where e.szuletes = {d '1974-01-01'}
most vagy én nem értem amit a könyvben olvasok vagy valami nem okés.
Ez viszont működik, pedig szerintem nem kéne neki (dátum van egy sima stringgel hasonlítva):
select e from Ember e where e.szuletes = '1974-01-01'
A lényeg hogy még mindig nem tudom lekérdezni az 1974-ben születetteket, valaki meg tudja mondani hogy kéne ?


Fontos linkek
Társoldalak
Callback image