网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.使用圆括号.
.浅谈 Java 中 this 的使用.
.利用java本地拷贝文件及文件夹.
.11本入门到精通J2EE书籍推荐.
.SCJP学习指南.
.replace 方法.
.java线程的缺陷.
.查询数据库后返回Iterator.
.侵入,无侵入? Annotation vs I.
.Java繁体中文处理完全攻略(二).
.用JavaBean实现文件上载(三)属性.
.propertyIsEnumerable 属性.
.使用J2SEAPI读取Properties文件的.
.JBuilder2005实现重构之分布式重.
.VisualCafe的主要工具介绍.
.新手入门Eclipse插件的安装与配置.
.JAVA基础:从.class文件中寻找类.
.技术摘要:如何编写安全的Java代.
.[JAVA100例]035、获取文件信息.
.Java的秘密:将应用程序的设定存.

在CMP实体BEAN中使用BLOB数据类型

发表日期:2008-1-5


  在Oracle这样的关系数据库中,CLOB和BLOB类型被用来存放大对象。BOLB表示二进制大对象,这种数据类型通过用来保存图片,图象,视频等。CLOB表示字符大对象,能够存放大量基于字符的数据。

  JDBC定义Java类型java.sql.Clob 和java.sql.Blob 对应数据库中的CLOB和BLOB类型。然而这两种类型并不能在实体BEAN中使用,因为这两个类没有被序列化(Serializable)。因此我们不能在CMP实体BEAN中定义java.sql.Clob或java.sql.Blob这两种数据类型。

  假如我们要使用数据库的BLOB字段,我们必须在实体bean中声明CMP字段为 byte[] 并映射该字段到数据库的BLOB字段。假如要使用CLOB字段,我们需要使用定义CMP字段为 java.lang.String or char[] 。

一个ENTITY的范例
  在一个企业里,处于安全考虑,我们也许要将员工的图片保存到数据库中的表里。这里我们使用EmployeePicture 作为范例来代表员工的图片实体。这个EmployeePictureBean CMP有两个属性 empno, picture。 picture 字段被定义成byte[]型 。

  该EmployeePicture实体BEAN被映射到EMPPIC数据表, picture 属性被映射为EMPPIC 表中的picture 字段,该picture字段是定义为BLOB类型的。

  下面是EmployeePictureBean.java的部分核心代码:

public abstract class EmployeePictureBean implements EntityBean
{
....
public abstract byte[] getPicture();
public abstract void setPicture(byte[] newPicture);
public Long ejbCreate(Long empno, byte[] newPicture)
{
setEmpno(empno);
setPicture(newPicture);
return empno;
}

public void ejbPostCreate(Long empno, byte[] newPicture)
{
}
...
}



  假如我们使用OC4J 9.0.4 ,就需要在orion-ejb-jar.XML中定义实体BEAN属性到数据表字段的映射。假如使用了其他J2EE容器,就需要在相关厂商的部署描述符中定义O-R映射。下面演示在OC4J中的映射代码:

<entity-deployment name="EmployeePicture" data-source="jdbc/OracleDS"
table="EMPPIC">

<primkey-mapping>

<cmp-field-mapping name="empno" persistence-name="EMPNO"
persistence-type="NUMBER(8)"/>

</primkey-mapping>

<cmp-field-mapping name="empno" persistence-name="EMPNO"
persistence-type="NUMBER(8)"/>

<cmp-field-mapping name="picture" persistence-name="PICTURE"
persistence-type="BLOB"/>

</entity-deployment>



客户端:
  CMP实体BEAN的客户端没有什么非凡的处理。唯一需要注重的是在update数据表时要使用BufferedInputStream 来读取IMAGE文件,但在检索数据表时使用OutputStream 。

  下面演示如何读取一个IMAGE文件,并创建一个BEAN实例:

// Locate and open the file

File imgFile = new File(fileName);

long imgFileSize= imgFile.length();

// initialize the byte array

byte byteValue[] = new byte[(int)imgFileSize];

// Read the file into the byte array

InputStream is = new BufferedInputStream(new FileInputStream(imgFile));

上一篇:java初级版FAQ---[jdk 安装] 人气:600
下一篇:Eclips使用秘技(绝对经典) 人气:642
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐