0 امتیاز
قبل در برنامه نویسی توسط (922 امتیاز)

برای ذخیره کردن یک فایل در دیتابیس MySQL با استفاده از Hibernate باید چکار کرد؟

قبل توسط (64 امتیاز)
سلام
شما گوگل رو سرچ کردین؟
من یه سرچ ساده زدم، به نظر میرسه جواب سوالتون اینجا باشه
http://stackoverflow.com/questions/5220556/save-file-in-mysql-database-using-hibernate
موفق باشید :)
قبل توسط (64 امتیاز)
جوابی که توی این لینک به سوالی مشابه سوال شما داده شده، و تو ذهن من هم بود اینه که چرا میخواید فایل رو توی دیتا بیس ذخیره کنید؟ آیا این یه فایل لاگ کوچیکه، یا حجم زیادی داده داره؟
اگه مطمین بودین که میخواین فایل رو ذحیره کنید، من کدش رو قبلأ نوشتم بگید که پیدا کنم و بهتون بدم.

1 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

ابتدا یک جدول در MySQL درست کنید که یک ستون از نوع longblob داشته باشد (برای ذخیره سازی فایل ها درون آن):

CREATE DATABASE `filedb`;
 
CREATE TABLE `files_upload` (
  `upload_id` int(11) NOT NULL AUTO_INCREMENT,
  `file_name` varchar(128) DEFAULT NULL,
  `file_data` longblob,
  PRIMARY KEY (`upload_id`)
)

سپس یک کلاس Entity برای map کردن جدول درست کنید و یک فیلد از نوع آرایه byte درون آن تعریف کنید:

package net.codejava.fileupload.model;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
 
@Entity
@Table(name = "FILES_UPLOAD")
public class UploadFile {
    private long id;
    private String fileName;
    private byte[] data;
 
    @Id
    @GeneratedValue
    @Column(name = "FILE_ID")
    public long getId() {
        return id;
    }
 
    public void setId(long id) {
        this.id = id;
    }
 
    @Column(name = "FILE_NAME")
    public String getFileName() {
        return fileName;
    }
 
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
 
    @Column(name = "FILE_DATA")
    public byte[] getData() {
        return data;
    }
 
    public void setData(byte[] data) {
        this.data = data;
    }
}

حالا می توانید با استفاده از hibernate فایل مورد نظر خود را در پایگاه داده ذخیره کنید:

UploadFile uploadFile = new UploadFile();
uploadFile.setFileName(aFile.getOriginalFilename());
uploadFile.setData(aFile.getBytes());

sessionFactory.getCurrentSession().save(uploadFile);
قبل توسط (2.2هزار امتیاز)
+1
کاملا درست و البته نیاز هست که از @Lob بر روی فیلد هم استفاده بشه تا محتوا بدون محدودیت و به صورت باینری ذخیره بشه

سوالات مشابه

0 امتیاز
1 پاسخ 458 بازدید
0 امتیاز
1 پاسخ 573 بازدید
+1 امتیاز
1 پاسخ 581 بازدید
0 امتیاز
1 پاسخ 492 بازدید
0 امتیاز
1 پاسخ 610 بازدید
0 امتیاز
2 پاسخ 857 بازدید
0 امتیاز
2 پاسخ 4.5هزار بازدید
0 امتیاز
2 پاسخ 2.9هزار بازدید
0 امتیاز
1 پاسخ 594 بازدید
0 امتیاز
1 پاسخ 620 بازدید
...