国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

在CMP實(shí)體BEAN中使用BLOB數(shù)據(jù)類(lèi)型

2019-11-17 06:05:56
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  在Oracle這樣的關(guān)系數(shù)據(jù)庫(kù)中,CLOB和BLOB類(lèi)型被用來(lái)存放大對(duì)象。BOLB表示二進(jìn)制大對(duì)象,這種數(shù)據(jù)類(lèi)型通過(guò)用來(lái)保存圖片,圖象,視頻等。CLOB表示字符大對(duì)象,能夠存放大量基于字符的數(shù)據(jù)。

  JDBC定義java類(lèi)型java.sql.Clob 和java.sql.Blob 對(duì)應(yīng)數(shù)據(jù)庫(kù)中的CLOB和BLOB類(lèi)型。然而這兩種類(lèi)型并不能在實(shí)體BEAN中使用,因?yàn)檫@兩個(gè)類(lèi)沒(méi)有被序列化(Serializable)。因此我們不能在CMP實(shí)體BEAN中定義java.sql.Clob或java.sql.Blob這兩種數(shù)據(jù)類(lèi)型。

  假如我們要使用數(shù)據(jù)庫(kù)的BLOB字段,我們必須在實(shí)體bean中聲明CMP字段為 byte[] 并映射該字段到數(shù)據(jù)庫(kù)的BLOB字段。假如要使用CLOB字段,我們需要使用定義CMP字段為 java.lang.String or char[] 。

一個(gè)ENTITY的范例
  在一個(gè)企業(yè)里,處于安全考慮,我們也許要將員工的圖片保存到數(shù)據(jù)庫(kù)中的表里。這里我們使用EmployeePicture 作為范例來(lái)代表員工的圖片實(shí)體。這個(gè)EmployeePictureBean CMP有兩個(gè)屬性 empno, picture。 picture 字段被定義成byte[]型 。

  該EmployeePicture實(shí)體BEAN被映射到EMPPIC數(shù)據(jù)表, picture 屬性被映射為EMPPIC 表中的picture 字段,該picture字段是定義為BLOB類(lèi)型的。

  下面是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中定義實(shí)體BEAN屬性到數(shù)據(jù)表字段的映射。假如使用了其他J2EE容器,就需要在相關(guān)廠商的部署描述符中定義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>



客戶(hù)端:
  CMP實(shí)體BEAN的客戶(hù)端沒(méi)有什么非凡的處理。唯一需要注重的是在update數(shù)據(jù)表時(shí)要使用BufferedInputStream 來(lái)讀取IMAGE文件,但在檢索數(shù)據(jù)表時(shí)使用OutputStream 。

  下面演示如何讀取一個(gè)IMAGE文件,并創(chuàng)建一個(gè)BEAN實(shí)例:

// 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));


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大英县| 台南市| 商城县| 石台县| 牙克石市| 富锦市| 三门峡市| 昌邑市| 正定县| 双城市| 吴江市| 乡城县| 中西区| 丰镇市| 策勒县| 奉化市| 津南区| 手游| 司法| 望城县| 沂源县| 唐山市| 内黄县| 高碑店市| 宜君县| 冷水江市| 宜阳县| 改则县| 林甸县| 茌平县| 疏附县| 特克斯县| 张家港市| 丘北县| 九寨沟县| 阿巴嘎旗| 普兰县| 阜康市| 垦利县| 连平县| 蒙城县|