国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 会同县| 花莲县| 静宁县| 石景山区| 昌宁县| 旬邑县| 筠连县| 鹤壁市| 临汾市| 罗山县| 乐业县| 社会| 上蔡县| 岑巩县| 玉树县| 郁南县| 集安市| 瑞金市| 临颍县| 祁东县| 新兴县| 万年县| 明溪县| 祁阳县| 达孜县| 措勤县| 贵德县| 漳浦县| 崇文区| 大厂| 镇江市| 陇南市| 汝阳县| 武夷山市| 五莲县| 乃东县| 五指山市| 永胜县| 蕲春县| 泾阳县| 雷波县|