日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

使用Hibernate加载或保存图像-MySQL

發(fā)布時(shí)間:2023/12/3 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Hibernate加载或保存图像-MySQL 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本教程將引導(dǎo)您逐步了解如何使用Hibernate從數(shù)據(jù)庫(kù)( MySQL )保存和加載圖像。

要求

對(duì)于此示例項(xiàng)目,我們將使用:

  • Eclipse IDE (您可以使用自己喜歡的IDE);
  • MySQL (您可以使用任何其他數(shù)據(jù)庫(kù),請(qǐng)確保在需要時(shí)更改列類型);
  • Hibernate jar和依賴關(guān)系(您可以下載帶有所有必需jar的示例項(xiàng)目);
  • JUnit –用于測(cè)試(示例項(xiàng)目中還包括jar)。

打印屏幕

當(dāng)我們完成該示例項(xiàng)目的實(shí)現(xiàn)時(shí),它應(yīng)如下所示:

數(shù)據(jù)庫(kù)模型

在開始使用示例項(xiàng)目之前,我們必須將此sql腳本運(yùn)行到MySQL中 :

DROP SCHEMA IF EXISTS `blog` ; CREATE SCHEMA IF NOT EXISTS `blog` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ; USE `blog` ;-- ----------------------------------------------------- -- Table `blog`.`BOOK` -- ----------------------------------------------------- DROP TABLE IF EXISTS `blog`.`BOOK` ;CREATE TABLE IF NOT EXISTS `blog`.`BOOK` (`BOOK_ID` INT NOT NULL AUTO_INCREMENT ,`BOOK_NAME` VARCHAR(45) NOT NULL ,`BOOK_IMAGE` MEDIUMBLOB NOT NULL ,PRIMARY KEY (`BOOK_ID`) ) ENGINE = InnoDB;

該腳本將創(chuàng)建一個(gè)表BOOK ,我們將在本教程中使用該表。

預(yù)訂POJO

我們將在這個(gè)項(xiàng)目中使用一個(gè)簡(jiǎn)單的POJO 。 一本書有一個(gè)ID ,一個(gè)名稱和一個(gè)圖像 ,該圖像由字節(jié)數(shù)組表示 。

當(dāng)我們要將圖像持久化到數(shù)據(jù)庫(kù)中時(shí),我們必須使用BLOB類型。 MySQL有一些BLOB的變體,您可以在這里檢查它們之間的區(qū)別。 在此示例中,我們將使用Medium Blob ,它可以存儲(chǔ)L + 3個(gè)字節(jié),其中L <2 ^ 24 。

確保不要忘記在“ 列”注釋上添加列定義 。

package com.loiane.model;import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.Table;@Entity @Table(name="BOOK") public class Book {@Id@GeneratedValue@Column(name="BOOK_ID")private long id;@Column(name="BOOK_NAME", nullable=false)private String name;@Lob@Column(name="BOOK_IMAGE", nullable=false, columnDefinition="mediumblob")private byte[] image;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public byte[] getImage() {return image;}public void setImage(byte[] image) {this.image = image;} }

休眠配置

此配置文件包含用于連接數(shù)據(jù)庫(kù)的必需信息。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration><session-factory><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql://localhost/blog</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">root</property><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="connection.pool_size">1</property><property name="show_sql">true</property></session-factory> </hibernate-configuration>

休眠實(shí)用程序

HibernateUtil類有助于從Hibernate配置文件創(chuàng)建SessionFactory 。

package com.loiane.hibernate;import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration;import com.loiane.model.Book;public class HibernateUtil {private static final SessionFactory sessionFactory;static {try {sessionFactory = new AnnotationConfiguration().configure().addPackage("com.loiane.model") //the fully qualified package name.addAnnotatedClass(Book.class).buildSessionFactory();} catch (Throwable ex) {System.err.println("Initial SessionFactory creation failed." + ex);throw new ExceptionInInitializerError(ex);}}public static SessionFactory getSessionFactory() {return sessionFactory;} }

在此類中,我們創(chuàng)建了兩種方法:一種將Book實(shí)例保存到數(shù)據(jù)庫(kù)中,另一種從數(shù)據(jù)庫(kù)中加載Book實(shí)例。

package com.loiane.dao;import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction;import com.loiane.hibernate.HibernateUtil; import com.loiane.model.Book;public class BookDAOImpl {/*** Inserts a row in the BOOK table.* Do not need to pass the id, it will be generated.* @param book* @return an instance of the object Book*/public Book saveBook(Book book){Session session = HibernateUtil.getSessionFactory().openSession();Transaction transaction = null;try {transaction = session.beginTransaction();session.save(book);transaction.commit();} catch (HibernateException e) {transaction.rollback();e.printStackTrace();} finally {session.close();}return book;}/*** Delete a book from database* @param bookId id of the book to be retrieved*/public Book getBook(Long bookId){Session session = HibernateUtil.getSessionFactory().openSession();try {Book book = (Book) session.get(Book.class, bookId);return book;} catch (HibernateException e) {e.printStackTrace();} finally {session.close();}return null;} }

測(cè)試

要對(duì)其進(jìn)行測(cè)試,首先我們需要?jiǎng)?chuàng)建一個(gè)Book實(shí)例,并將圖像設(shè)置為image屬性。 為此,我們需要從硬盤驅(qū)動(dòng)器中加載一幅圖像,然后將使用位于images文件夾中的圖像。 然后我們可以調(diào)用DAO類并保存到數(shù)據(jù)庫(kù)中。

然后,我們可以嘗試加載圖像。 為了確保它與我們加載的圖像相同,我們將其保存在硬盤中。

package com.loiane.test;import static org.junit.Assert.assertNotNull;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream;import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test;import com.loiane.dao.BookDAOImpl; import com.loiane.model.Book;public class TestBookDAO {private static BookDAOImpl bookDAO;@BeforeClasspublic static void runBeforeClass() {bookDAO = new BookDAOImpl();}@AfterClasspublic static void runAfterClass() {bookDAO = null;}/*** Test method for {@link com.loiane.dao.BookDAOImpl#saveBook()}.*/@Testpublic void testSaveBook() {//File file = new File("images\\extjsfirstlook.jpg"); //windowsFile file = new File("images/extjsfirstlook.jpg");byte[] bFile = new byte[(int) file.length()];try {FileInputStream fileInputStream = new FileInputStream(file);fileInputStream.read(bFile);fileInputStream.close();} catch (Exception e) {e.printStackTrace();}Book book = new Book();book.setName("Ext JS 4 First Look");book.setImage(bFile);bookDAO.saveBook(book);assertNotNull(book.getId());}/*** Test method for {@link com.loiane.dao.BookDAOImpl#getBook()}.*/@Testpublic void testGetBook() {Book book = bookDAO.getBook((long) 1);assertNotNull(book);try{//FileOutputStream fos = new FileOutputStream("images\\output.jpg"); //windowsFileOutputStream fos = new FileOutputStream("images/output.jpg");fos.write(book.getImage());fos.close();}catch(Exception e){e.printStackTrace();}} }

要驗(yàn)證它是否確實(shí)保存,讓我們檢查表Book :

如果我們右鍵單擊...

并選擇查看我們剛剛保存的圖像,我們將看到它:

源代碼下載

您可以從以下位置下載完整的源代碼(或分叉/克隆項(xiàng)目– git ):

Github : https : //github.com/loiane/hibernate-image-example

BitBucket : https : //bitbucket.org/loiane/hibernate-image-example/downloads

編碼愉快!

參考: 如何使用Hibernate加載或保存圖像–來(lái)自Loiane Groner博客博客的JCG合作伙伴 Loiane Groner 。


翻譯自: https://www.javacodegeeks.com/2012/05/load-or-save-image-using-hibernate.html

總結(jié)

以上是生活随笔為你收集整理的使用Hibernate加载或保存图像-MySQL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99热只有这里有精品 | 粉嫩av一区二区三区免费观看 | 天美视频在线观看 | 中文字幕在线观看三区 | 777欧美| www视频在线 | 日韩91精品| 亚洲欧美日韩国产一区二区 | 99热在线这里只有精品 | 免费观看黄色一级视频 | 成人欧美一区二区三区 | 91在线最新| 国产激情视频一区 | 福利影院在线 | 在线观看欧美视频 | 中文字幕一区二区三区日韩精品 | 在线观看欧美视频 | 欧美午夜精品一区二区 | 男生尿隔着内裤呲出来视频 | 国产最新在线观看 | 国产欧美日韩另类 | 国产精品精品视频 | 日本真人做爰免费视频120秒 | 我要爱爱网 | 亚洲性xx | 亚洲骚片 | 日本道在线观看 | 四色永久访问 | 99热综合 | 国产白浆视频 | 国产精品久久久久久久毛片 | 色屁屁草草影院ccyycom | 日韩av无码久久 | 久操影视 | 欧美一级日韩 | 九一国产在线 | 国产性生活毛片 | 久久夜精 | 亚洲啊啊啊啊啊 | 黄色免费网站在线观看 | 国产东北真实交换多p免视频 | 91精品国产91久久久久青草 | av在线不卡网 | 不卡av影院| 一级免费在线 | 一级做a免费 | 精品国产美女 | 姑娘第5集在线观看免费好剧 | 亚洲v欧美v另类v综合v日韩v | 男女作爱免费网站 | 高h调教冰块play男男双性文 | 99这里有精品 | 妓院一钑片免看黄大片 | 成人app在线 | 日韩不卡一二三区 | 来吧亚洲综合网 | 夜夜爽av福利精品导航 | 黄色av不卡 | 一区在线免费 | 九九精品视频免费 | 亚洲欧美变态另类丝袜第一区 | 在线不卡日韩 | 女人免费视频 | 岛国久久久| 亚洲欧美一级 | 校园春色综合网 | 成人免费毛片观看 | 熟女视频一区二区三区 | 国产乱码精品1区2区3区 | 国产91视频播放 | 国产精品一区二区免费看 | 欧美日韩a级 | 国产欧美日韩专区 | 手机看片福利永久 | 午夜在线视频观看 | 欧美www在线观看 | 亚洲最大的成人网 | 玖玖视频 | 亚洲一区二区三区av无码 | 制服丝袜亚洲色图 | 深爱激情综合网 | www在线观看免费视频 | 久久av免费观看 | 狼人狠狠干 | 丁香九月激情 | 中日韩午夜理伦电影免费 | 三级男人添奶爽爽爽视频 | 欧美啪啪一区 | 亚瑟av | 日韩一二三区在线观看 | 天天摸天天碰 | 日本欧美www | 天堂新版8中文在线8 | 国产女人18毛片 | 大尺度做爰呻吟62集 | 亚洲美女毛片 | 色眯眯av | 欧美一级特黄aaaaaa大片在线观看 | 成人免费视频网站在线看 |