LOB adatok feltérképezése hibernált állapotban
1. Áttekintés
A LOB vagy a Large OBject változó hosszúságú adattípusra utal nagy objektumok tárolására.
Az adattípusnak két változata van:
- CLOB - Karakter nagy objektum nagy szöveges adatokat tárol
- BLOB - Bináris nagy objektum bináris adatok tárolására szolgál, például kép, hang vagy videó
Ebben az oktatóanyagban megmutatjuk, hogyan használhatjuk a hibernált ORM-et nagy objektumok megtartásához.
2. Beállítás
Például a Hibernate 5 és a H2 adatbázist fogjuk használni. Ezért deklarálnunk kell őket függőségként pom.xml:
org.hibernate hibernate-core 5.4.12. Végső com.h2database h2 1.4.196
A függőségek legújabb verziója a Maven Central Repositories-ban található.
A Hibernate beállításának részletesebb áttekintéséhez olvassa el az egyik bevezető cikkünket.
3. LOB adatmodell
A mi modellünk „Felhasználó” tulajdonságai az azonosító, a név és a fénykép. Képet tárolunk a FelhasználóFotótulajdonságát, és feltérképezzük egy BLOB-ra:
@Entity @Table (name = "user") public class User {@Id private String id; @Column (név = "név", columnDefinition = "VARCHAR (128)") privát karakterlánc neve; @Lob @Column (név = "fotó", columnDefinition = "BLOB") privát byte [] fotó; // ...}
A @Fajankó az annotation megadja, hogy az adatbázisnak a tulajdonságot mint Nagy objektum. A oszlopDefiníció ban,-ben @Oszlop az annotáció határozza meg az oszlop típusát.
Mivel spórolni fogunk bájt tömb, használjuk FOLT.
4. Használat
4.1. Hibernált munkamenet kezdeményezése
session = HibernateSessionUtil .getSessionFactory ("hibernate.properties") .openSession ();
A segítő osztály felhasználásával felépítjük a Hibernált munkamenet ban megadott adatbázis-információk felhasználásával hibernálni.tulajdonságok fájl.
4.2. Felhasználói példány létrehozása
Tegyük fel, hogy a felhasználó képfájlként tölti fel a fényképet:
Felhasználó felhasználó = új Felhasználó (); InputStream inputStream = this.getClass () .getClassLoader () .getResourceAsStream ("profile.png"); if (inputStream == null) {fail ("Nem sikerült beszerezni az erőforrásokat"); } user.setId ("1"); user.setName ("Felhasználó"); user.setPhoto (IOUtils.toByteArray (inputStream));
A képfájlt a. Segítségével átalakíthatjuk bájt tömbgé Apache Commons IO könyvtár, végül hozzárendeljük a bájt tömböt az újonnan létrehozott részeként Felhasználó tárgy.
4.3. Tartós nagy tárgy
A Felhasználó használni a Ülés, a Hibernálás átalakítja az objektumot az adatbázis rekordjává:
session.persist (felhasználó);
A @Fajankó osztályon deklarált kommentár Felhasználó, Hibernálás megérti, hogy tárolnia kell a "fénykép" ingatlan mint FOLT adattípus.
4.4. Adatok ellenőrzése
Visszaadjuk az adatokat az adatbázisból és a Hibernálás hogy visszaképezzem Jáva objektum, hogy összehasonlítsa a beillesztett adatokkal.
Mivel ismerjük a beillesztettet Felhasználó‘s id, felhasználjuk az adatok lekérésére az adatbázisból:
Felhasználói eredmény = session.find (Felhasználó.osztály, "1");
Hasonlítsuk össze a lekérdezés eredményét a bemenettel FelhasználóAdatai:
assertNotNull ("A lekérdezés eredménye null", eredmény); assertEquals ("A felhasználó neve érvénytelen", user.getName (), result.getName ()); assertTrue ("A felhasználó fényképe sérült", Arrays.equals (user.getPhoto (), result.getPhoto ()));
Hibernálás leképezi az adatbázisban lévő adatokat a Jáva objektum ugyanazokat a leképezési információkat használja a feljegyzéseken.
Ezért a visszakeresett Felhasználó objektumnak ugyanazok az információi lesznek, mint a beillesztett adatoknak.
5. Következtetés
FAJANKÓ a nagy objektum adatok tárolására szolgáló adattípus. Kétféle változata van FAJANKÓ amelyet úgy hívnak FOLT és CLOB. FOLT bináris adatok tárolására szolgál, míg CLOB a szöveges adatok tárolására szolgál.
Használata Hibernálás, bebizonyítottuk, hogy nagyon egyszerű az adatokat leképezni ide és onnan Jáva objektumokat, mindaddig, amíg az adatbázisban meghatározzuk a helyes adatmodellt és a megfelelő táblaszerkezetet.
Mint mindig, a cikk kódja elérhető a GitHubon.