Java + Adatbazis = Hibernate
2012-03-13T18:09:48+01:00
2012-03-17T20:45:38+01:00
2022-07-24T04:47:19+02:00
  • Adott egy Android alkalmazas rajta egy adatbazissal ( SQLite adatbazis ). Nos XY bejelentkezik az alkalmazassal kerest kuldve ezaltal a servernek ami valaszkepp XY-ra vonatkozo adatokat a fo adatbazisrol az Androidos adatbazisba tolti be. A felhasznalo bejelentkezett es immar offline tud dolgozni, a vegen pedig frissiti a server adatbazisat. Ezalol a rendszer alol egyedul az admin kivetel aki kozvetlen kapcsolatban all a szerverrel igy nincs szuksege SQLite adatbazis hasznalatara. Ehhez az egeszhez meg clienskent tarsul egy webapp ami viszont mar egy masik csoport feladata, szoval ez jelen pillanatban nem erdekel. :)
    A server nem csupan a fo adatbazissal valo kereseket szolgalja ki de egyebb muveletre is felkerheto bizonyos bemeno adatokkal aminek az eredmenyeit a fo es az SQLite adatbaziba is ment.
    (ez a mondat nem 100%, h ertheto :)) )

    Nos nagyvonalakban ezt kene megvalositsuk.

    Mutasd a teljes hozzászólást!
  • Én nem mernék ilyeneket ajánlani, mert könnyű belebonyolódni, ha nincs mellette aki segítene.

    (Ne hari, én még mindig az alap verzióra szavaznék, lényeg működjön, mire összerakja addigra megismeri a Hibernate et és betolhatja a jdbc főlé. A jpa t sem említeném még, nem hogy a spring et.)

    Én picit későn csöppentem bele ezekbe a technológiákba, és ezért én nem tudok többet hozzá adni a posthoz, csak annyit, hogy hajrá!
    Mutasd a teljes hozzászólást!
  • Gondolom szerver alatt egy webappot ert, ami fogad kereseket, feldolgozza oket es ad valami valaszt. Kozben valami DB muveletet is vegrehajt. Szerintem ez van itt a "java server" kifejezes mogott.
    Amit en javasolnek, az Spring + hibernate/eclipselink ill. JEE5/6 (GF3.1). De jo lenne tudni a konkret feladatot is. azert van eszkoz boven...
    Mutasd a teljes hozzászólást!
  • Ezt a felállást még nem csináltam, szerintem egyáltalán nem nehéz, pár hét ahogy itt mondták.

    De azt ne gondold, hogy egy érintőlegesen használt hibernate el már nem lesz vele tanulni valód.
    Igazából minél többet csinálod, annál több tanulni valód lesz.

    A többiek biztos tudnak egy reverse engineer t, ami relációs adatbázisból létrehozza az entitiket. (de ez már megint magas még, szerintem)

    De szeretném hangsúlyozni, hogy a db design és réteges szemlélet a legfontosabb része, és nem a hibernate, nem a jsp meg akármi


    Sok sikert!
    Mutasd a teljes hozzászólást!
  • Igazából arra utaltam, ha már valami komoly orm, akkor már az alkalmazáshoz Spring megy a vállalati webes alkalmazásokra utalva.

    De azért is írtam le utána a 1.2.3 pontokat, mert nem kéne belekeverni addig komolyabb dolgokat, amíg az alapok nem mennek.
    "Java szervert kell keszitsek" ez azé eléggé durva megfogalmazás.
    Kikerülve fontos alapokat örök slamasztika vár rá, inkább most menjen rajta keresztül, mint más mondja később neki élesbe.

    Ezért a jsp is, sajna én Zkoss és Vaadin t használtam eddig, ami ide sok lenne.

    Egyébként a rétegződés nagyon fontos, ezt se később tanulja meg, hanem gondolkodjon benne.
    Mutasd a teljes hozzászólást!
  • JPA-s doksi. Elirtam.
    Mutasd a teljes hozzászólást!
  • Ez kb az architekturalis retegzes kerdese amit feszegetsz. A lenyeg, a retegek felafata, amennyire csak lehetseges, jol definialt legyen, ne fedjek egymast. Adott projekt donti el, hogy mennyire erdemes ezeket a retegeket szetvalasztani. Alapvetoen egy MVC modellt erdemes nezni, de speciel en a Controller reszt meg 3-5 kozbenso retegre tagolni szoktam. Robosztusabb projektek eseten a tobbit is.
    Amugy miert jsp? Miert nem mas? Ezer fajta dolog van a View-hoz... Ha mar springet akar hasznalni, akkor Spring MVC/flow (tudom, jsp alapu). Backendre Spring + valami JPA implementacio...
    Mutasd a teljes hozzászólást!
  • Alapokat hamar elsajatitod (keress egy JPS-s doksit, aztan hajra). 1-2 het siman eleg az alapokhoz, de szerintem joval kevesebb is. A finomsagok meg majd jonnek...
    Mutasd a teljes hozzászólást!
  • Springgel azt hasznalsz, amit akarsz. Nem hibernatehez valasztunk springet :) Hanem feladathoz eszkozt. Springgel megy eclipselink is pl.
    Mutasd a teljes hozzászólást!
  • Elnezest kell kerjek. Elnezest. Nem mondtam el, hogy mit tudok mielott azt kerdeztem, h mennyi ido megtanulni egy uj technologiat.


    Nos az alatalad leirtakkal mar tisztaban vagyok es hasznaltam is mar oket egy masik projekt keretein belul.

    Ezeket tudva, korulbelul mennyi idobe kerulne elsajatitani, a Hibernatet ?

    Koszonom a valaszokat es elnezest megegyszer.
    Mutasd a teljes hozzászólást!
  • Szerintem a Hibernate az nagy falat lenne neked megtanulni elsőre.
    Mivel legtöbb webes javas alkalmazás db re épül és következésképp annak használatára adat hozzáadás, törlés, módosítás
    Én egy kezdőnek mindenféleképpen a következőket ajánlanám

    1.jsp : felhasználói felület renderelés/kiiratás
    2.pure java : definiálni mit csináltok (felhasználót kiszolgáló funciók)
    3.dao : adat elérés jdbc n keresztül
    mysql vagy akármi : db

    Szervernek meg jó a tomcat.

    Idővel ahogy tanultok majd cserélgetitek, vagy épp beszúrtok egy modernebb részt, ha már biztosak vagytok a kezelésében.

    Igazából mindennek alapja az adatbázis tervezés, minden oda ment és onnan olvas, onnan kérdez le.
    Ha jól megtervezitek, akkor még ha nagy módosítások is lesznek más helyeken, van egy biztos pont, amire tudtok építkezni és jónak kell lenni.

    Van egy mysql workbench ingyenes alkalmazás, amivel megtudjátok tervezni az adatbázist sémáját.
    Ha megvan, és minden elképzelhető lekérdezést tudtok rajta futtatni, akkor azt jdbc n keresztül elérve jsp vel 'kiiratva' már jó úton vagytok.

    Amit még szem előtt kell tartani, az, hogy az 1.2.3 pontoknak nem szabadna egymásba folynia, pl nem szabadna a jsp be olyat írni, hogy végig lépkedünk a felhasználókon, hogy megkeressük a tanárokat köztük.
    Ez mind a 2. réteg dolga.

    És nem csinálunk olyat, a 2. ben, hogy select * from user where age > 18
    Hanem 2. ben egy java metódus, hogy List<user> getWhoIsOver18() {dao.getWhoIsOver18()}

    A 3. ban ami a DAO, lesz egy public getWhoIsOver18() { select * from user where age > 18 ... valami}

    Ez az elszeparálás segíti majd azt, hogy ha nem mosódnak össze a dolgok, akkor könnyebben ki is cserélhetőek.

    Ennyit tok segíteni, a többiben majd a többiek és google fog segíteni.
    Mutasd a teljes hozzászólást!
  • Mennyi ido kell a Hibernate elsajatitasahoz? Szorit az ido egy kicsit.
    Mutasd a teljes hozzászólást!
  • A JDBC-hez mit szoltok ?
    Mutasd a teljes hozzászólást!
  • Azért használják jobban a Hibernate t, mert a Spring ORM ezt támogatja elsősorban.
    (Mert ha már Hibernate, akkor már Spring is)

    Mondjuk nem értem miért ajánljátok a NoSql t, amikor tuti, hogy a tárolt adatok függnek egymástól. Vagyis elsősorban relációs db t kéne neki használnia.
    NoSql ben nincs relációs lehetőség, mondjuk: user n - 1 country.
    stb
    Remélem jól tudom amit írtam.
    Mutasd a teljes hozzászólást!
  • Azért itt érdekes dolgokat olvasgatok ám. Szóval adva van egy redundáns adatbázis, amiben értelmezett az adat módosítás művelete, és elvárt az integritás egységének megőrzése. Aztán adva van egy designer is, aki azt állítja, hogy "de akkor is gyors tud az lenni". Nekem bizony van egy sanda gyanúm, hogy első alkalommal, amikor ez a szitu találkozik majd a tranzakció fogalmával, annyi lockot kell majd kiszórni, hogy a Duna elrekedne tőle. Ha éppen akkor használja azt az adatbázist akár csak pár100 konkurens felhasználó, dícsérni fogják ám a felmenőjét annak a designernek vastagon.
    Mutasd a teljes hozzászólást!
  • Kipróbáltam a cassandra-t hector-ral, tényleg gyors és szerintem egyszerű is. Csak érdeklődnék, hogy count (id)-t lehet benne valahogy csinálni, mert ahogy utánanéztem, elsőre azt dobta a gugli, hogy nem tud ilyet. Az struktúra tevezés itt hogy történik? Jobb, ha egy entitást használok vagy az a jobb ha többet, de akkor ahogy láttam nekem kell a relációkat karban tartani? Bár, mintha valahol azt olvastam volna erről a noSQL-ről, hogy a flat struktúrát preferálja és nem probléma a redundancia, mert akkor is gyors. És még egy kérdés. a tranzakció kezelés hogy történik itt? Utánaguglizhatnék, de egyszerűbb és gyorsabb lenne, ha leírnád, esetleg más is tanulhatna belőle. Köszi!
    Mutasd a teljes hozzászólást!
  • Érdemes lenne ezt is kipróbálnod: MyBatis.
    Mutasd a teljes hozzászólást!
  • Szerintem mindenképpen érdemes megtanulni, mint technológiát, főleg ha a suli után el is szeretnél helyezkedni. Egy állásinterjún jó pont a Hibernate tapasztalat.
    A leírásod alapján a projekt mérete meg se közelíti azt a szintet, ahol mérhető teljesítmény problémát okozna az ORM. A szűk keresztmetszet a mobil kliens internetkapcsolata lesz.

    Egyébként ha igazán nagy teljesítményű adatbázist akarsz, akkor Oracle, lehetőleg ORM nélkül sok-sok tárolt eljárással.
    Vagy Cassandra, szétterítve n cluster-ren. Ahol n konkurens session-ok száma osztva mondjuk 1000-el, persze ez attól függ mennyire bonyolult query-ket végeztetsz az adatbázissal.
    Mutasd a teljes hozzászólást!
  • Azért nem olyan lassú az a Hibernate. Ráadásul több lehetőség van a tuningra is, extrem esetben nativ jdbc-n keresztül is futtathatsz sql utasításokat. Amikre érdemes figyelni tervezéskor: kapcsolatok (eager vagy lazy, bidirectional vagy sem), Java Objektum öröklését, hogyan valósítsa meg a Hibernate, flat struktúrát akarsz-e vagy sem, akarsz-e HibernateSearch-öt használni keresésre (irtózatosan megnöveli a sebességet és egyéb feature-ket is tud!), cache méret és optimalizálás, stb. Ami nagy előnye, hogy a validálást elintézheted ezen a szinten és a WEB-rétegen már nem kell foglalkoznod jó esetben validálással, mert csak megjeleníted az üzenetet és kész. Egyedüli ami nem nagyon tetszik benne, hogy igazából teljesen elfedi az adatbázist, szinte teljesen mindegy, hogy mysql van alatta vagy drága oracle. Ezért a hibernate olyan funkciókat nem is támogat, mint oracle object/nested table vagy xml table, persze jdbc-n keresztül nem probléma elérni. Ha nagyon problémás a sebesség pl. MyBatis-sal is lehet kombinálni.
    Mutasd a teljes hozzászólást!
  • Amugy lesz egy Java alapu szerver egy adatbazissal karoltve amegy egy android cliensel komunikal amin szinen lesz egy adatbazis ( csak kicsi ) es igy fognak az adatok ide oda menni.
    Mutasd a teljes hozzászólást!
  • Egyenlore csak altalanosan mivel:

    A mostani projekt aminek nekifogunk az egy egyetemi projekt. Itt ugye nem lenne a hibernate se megterhelve, viszont felvetette a kerdest, h erdemes e megtanulni mint technologiat. Sajnalattal hallom, h lassu. Ezert itt kezileg fogjuk megirni az adatbazishoz valo hozzaferest ( valoszinuleg ).

    De engem erdekelne gyors adatbazis letrehozasa. Ehhez azt mondtad, h NoSQL kell. Ezekhez sajnos nem ertek ( a projekt nem ebben fog irodni ) viszont jo lenne egy altalanos kep eljen bennem ezugyben is :)

    Mutasd a teljes hozzászólást!
  • mihez kell?
    Mutasd a teljes hozzászólást!
  • Az ORM minimális overheadet jelent ahhoz képest mint ha kézzel írod meg a data access layert. Különösen a mai gépeken.
    Mutasd a teljes hozzászólást!
  • Tudnal ajanlani egy megbiszhato gyors es konnyen fejleszthetot? lehet sokat kerek
    Mutasd a teljes hozzászólást!
  • Lassú.
    Az ORM egy új absztakciós réteget vezet be az SQL adatbázis és az alkalmazás logika között. Szép, átlátható, könnyen karbantartható lesz a forráskód, de ezért teljesítmény csökkenéssel kell fizetni. Szerintem 1000 konkurens session felett már nem érdemes ORM-el vacakolni, hanem eleve valami noSQL megoldást kell választani adat tárolásra, főleg ha elosztott adatbázist szeretnénk.
    Mutasd a teljes hozzászólást!
  • Szia, hogy erted azt, h kis dolgokra ? Es magyobbakra nem jo ? Varom a valaszod ;)
    Mutasd a teljes hozzászólást!
  • Igazatok van elirtam: hibernate.

    Azt mondtak, h a mai projektek mind ezt hasznaljak.
    Mutasd a teljes hozzászólást!
  • évek óta használom, szerintem teljesen rendben van.
    kis dolgokra vagy demózásra tökéletes.
    Mutasd a teljes hozzászólást!
  • Hipernate nem tudom, mi lehet.
    Hibernate meg nem adatbázis kezelő, hanem ú.n. ORM
    Mutasd a teljes hozzászólást!
  • Nos eleg jo kepet festettek szamomra a Hipernate-rol mint Java adatbaziskezelo.


    Egesz pontosan miket meseltek errol a Hipernate-rol..?
    Mutasd a teljes hozzászólást!
abcd