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 پاسخ 396 بازدید
0 امتیاز
1 پاسخ 445 بازدید
+1 امتیاز
1 پاسخ 467 بازدید
0 امتیاز
1 پاسخ 389 بازدید
0 امتیاز
1 پاسخ 436 بازدید
0 امتیاز
2 پاسخ 695 بازدید
0 امتیاز
2 پاسخ 4.3هزار بازدید
0 امتیاز
2 پاسخ 2.7هزار بازدید
0 امتیاز
1 پاسخ 464 بازدید
0 امتیاز
1 پاسخ 521 بازدید
...