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

评论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab绘制簇状图,用matplotlib自定义绘制柱形图

import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsdf pd.read_excel("D:\我的文档\jupyter notebook.xlsx")dfsns.set(style "white", font_scale 1.2)# 解决中文乱码plt.rcParams[ "font.sans-serif"] "simhe…

hp打印机怎么连接电脑_打印机怎么连接电脑?安装打印机图文教程

怎么安装打印机?有用户买了打印机后却不懂该如何安装并且连接电脑,下面就给大家分享打印机的具体安装方法。本地打印机安装:1.先把随机配送光盘放进光驱,如电脑没有光驱的话,可以直接把文件拷到U盘,再放到电…

toad dba suite for oracle 12,Toad DBA Suite 和Toad Development Suite的区别

这两个版本都包括了Toad、Sql Optimizer、Data Modeler、Toad DataAnalysi、Konwledges等基本软件。DBA版又增加了Spotlight On Oracle单机版,Development版则增加了Benchmark for Oracle和Code Tester这两个软件。可以认为DBA版和开发版是不同的打包方式。(以上内容…

正泰eplan_【万泉河】给EPLAN初学者的建议:不用宏

首先声明,我不是EPLAN的高手,对画电气图的熟悉程度,远远不如我对PLC和WinCC的来的得心应手。但在这里,把我个人一点点经验推荐给大家。以避免新手在初学EPLAN的时候遭遇过多的挫折,从而一次次的由入门到放弃。这是我个…

git 查看自己秘钥_gitlab配置ssh密钥及简单使用

演示环境:当前系统Centos6.9,使用IP192.168.0.80修改gitlab仓库地址编辑gitlab.yml文件vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml将host: gitlab.example.com改成host: 192.168.0.80PS:当然你也可以把192.168.0.80改…

码工里开关灯为什么遮罩层在下面_装修公司为什么推荐无主灯设计?

此前的文章,我们曾多次提到无主灯设计,包括它的一些做法和注意事项,介绍过它高明的艺术手法。但是,我们从未讲解过无主灯设计的一些缺点和盲区,所以,也许笔者下面要讲的内容,将会颠覆你此前对无主灯设计的认识。无主灯设计客厅缺点一:挑空间(层高)一直以来,我们可能都认为,无主…

oracle导入 不是dba,IMP-00013只有DBA才能导入由其他DBA导出的文件

IMP-00013 只有 DBA 才能导入由其他 DBA 导出的文件--实例演示---system用户导出C:\Users\ZML>exp system/zml fileD:\zml.dmp log D:\zml.log tables (zml)Export: Release 11.2.0.1.0 - Production on 星期一 4月 21 21:39:12 2014Copyright (c) 1982, 2009, Oracle and…

oracle dbms_crypto,Oracle的dbms_obfuscation_toolkit加密解密数据

oracle从8i开始提供一个数据加密包:dbms_obfuscation_toolkit.利用这个包,我们可以对数据进行DES,Triple DES或者MD5加密. 本文就此讲解如何使用以及使用过程需要注意的问题.1. dbms_obfuscation_toolkit简介dbms_obfuscation_toolkit主要有一下几个存储过程:-DESGETKEY -- 产…

黑苹果系统坏了如何恢复_黑苹果macOS系统U盘版/恢复版基础安装教程

写在前面本文最后更新:2020年7月17日本文是一篇黑苹果安装基础教程,内容比较入门。安装黑苹果,相信谁都不敢说自己能100%解决所有问题。如果本文未能解决你的问题,请见谅。本文主要介绍两种安装方式:U盘安装&#xff0…

为什么安监控需要公网ip_媲美专线的视频监控组网,无须公网ip

众所周知,视频监控是安防系统的重要组成部分,各行各业必备,比如:超市、学校、公司、厂区等等随着社会的发展,利用网络传输搭建视频监控系统,已经成为了各行各业的普遍需求今天给大家带来,媲美专…

php中的file_upload,PHP文件上传(PHP file upload)

PHP文件上传(PHP file upload)我正在尝试使用php将文件上传到我的服务器,将它们保存到我的mysql数据库中,但我无法让它工作,这是我正在使用的脚本,我相信它与“$ _FILES有关“因为当我把它拿出来时”&& $ _FILES [userfil…

java 调用jira_java调用jira接口

http://www.cnblogs.com/starcrm/p/4837971.html首先通过jira的wsdl(http://localhost:8080/rpc/soap/jirasoapservice-v2?wsdl)生成要引入的类然后写客户端:package jiraTEST;import java.net.URI;import java.net.URISyntaxException;import java.util.ArrayList…

百度seo排名点击器app_百度SEO优化和百度竞价优缺点 - 百度整站排名

原出处:超级排名系统原文链接:百度SEO优化和百度竞价优缺点 - 超级排名系统SEO优化的优势:1、低价:在百度优化排名中,维持一年排名的成本可能只有一到两个月的竞价成本,这比竞价便宜得多,超级排…

html网页放大时文字不换行_WEB前端-html基础

一、介绍1、HTML概念HTML(Hypertext Mark-up Language)即超文本标记语言2.HTML特点HTML不需要编译,直接由浏览器执行HTML文件是一个文本文件HTML文件必须使用html或htm为文件名后缀HTML大小写不敏感,HTML与html一样3.HTML基础语法…

linux目录隐藏技术,Linux环境下的高级隐藏技术

摘要:本文深入分析了Linux环境下文件、进程及模块的高级隐藏技术,其中包括:Linux可卸载模块编程技术、修改内存映象直接对系统调用进行修改技术,通过虚拟文件系统proc隐藏特定进程的技术。隐藏技术在计算机系统安全中应用十分广泛…

python代替shell脚本_python的简洁是shell无法代替的

之前线上服务器分发配置都是用shell和expect脚本分发,脚本写了很长,上周换了ansible,现在自己用python写一个,就30行代码就可以实现需求,之前的shell写了快200行了,蛋疼,代码如下: f…

linux命令cp命令行参数,linux命令之cp命令参数及用法详解

cp (复制档案或目录)[rootlinux ~]# cp [-adfilprsu] 来源档(source) 目的檔(destination)[rootlinux ~]# cp [options] source1 source2 source3 …. directory参数:-a :相当于 -pdr 的意思;-d :若来源文件为连结文件的属性(link…

python电脑编程求圆的面积案例_学Python划重点七 网络编程(UPD Socket编程、上传文件实例、计算圆的面积实例)...

一、UPD Socket 编程 socket 对象中与UDP Socket 服务器编程有关的方法是bind() ,注意不需要listen() 和accept() , 这是因为UDP 通信不需要像TCP 一样监听端口,建立连接。 socket.recvfrom(buffsize) : 接收UDP Socket 数据&…

alert获取输入框内容_获取由 AlertDialog 生成的对话框中EditText的文本内容

在Android开发中,AlertDialog常用于处理用户的登录等。那么如何获取由 AlertDialog 生成的对话框中EditText的文本内容呢?其实Alertdialog弹出的Activity 可以认为是默认的Activity的子Activity。不能直接使用findViewById()来获取。强行使用会提示一个空…

linux中将 home目录备份成,6种优化Linux系统备份的应用与技巧

【51CTO.com快译】当转为使用Linux时,你可能会注意到你所使用的版本会带有一个默认的备份工具。然而,可能该工具并没有被设置好去备份你系统中所有重要的部分。而且,使用该默认工具也可能导致它以比预期更低的效率去产生一些更大的备份数据。…