oracle 谭岚_Hibernate实现Oracle BLOB的数据读写(2)

这次采用的是EJB3的配置

测试环境与前次一样:Hibernate3.6.7,Oracle 10g Express,JDK7,Win7

1,数据库脚本

create table TUser (

ID char(32) not null,

name varchar(10char) not null,

photo blob, --头像

constraint PK_TUser primary key (ID)

);

2,配置文件,即META-INF/persistence.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/persistence

http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"

version="2.0">

org.hibernate.ejb.HibernatePersistence

3,编写实体类User.java

package com.tanlan.hibernate.entity;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.Lob;

import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity

@Table(name = "TUser")

public class User {

@Id

@GenericGenerator(name = "uid", strategy = "uuid")

@GeneratedValue(generator = "uid")

private String id;

@Column

private String name;

@Lob

@Column

private byte[] photo;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public byte[] getPhoto() {

return photo;

}

public void setPhoto(byte[] photo) {

this.photo = photo;

}

}

4.测试代码

package com.tanlan.hibernate.test;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.EntityTransaction;

import javax.persistence.Persistence;

import com.tanlan.hibernate.entity.User;

public class TestUser {

public static void main(String[] args) {

addUser();

//getUserById();

}

private static void addUser() {

User user = new User();

user.setName("谭岚");

File photo = new File("D:\\test.jpg");

try {

FileInputStream is = new FileInputStream(photo);

ByteArrayOutputStream os = new ByteArrayOutputStream();

byte[] temp = new byte[512];

int i = 0;

while ((i = is.read(temp, 0, temp.length)) != -1) {

os.write(temp, 0, temp.length);

}

os.close();

is.close();

user.setPhoto(os.toByteArray());

} catch (Exception e) {

e.printStackTrace();

}

EntityManager em = createEntityManager();

EntityTransaction transaction = em.getTransaction();

transaction.begin();

em.persist(user);

transaction.commit();

}

private static void getUserById() {

EntityManager em = createEntityManager();

User user = (User) em.find(User.class,"402881e432aad3340132aad33c210000");

em.close();

byte[] photo = user.getPhoto();

try {

FileOutputStream os = new FileOutputStream("E:\\333.jpg");

os.write(photo);

os.close();

} catch (Exception e) {

e.printStackTrace();

}

}

private static EntityManager createEntityManager() {

EntityManagerFactory emf = Persistence.createEntityManagerFactory("test");

return emf.createEntityManager();

}

}

1

1

分享到:

2011-09-27 20:27

浏览 2935

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值