2024年1月1日发(作者:)

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

目 录

1.1

在Hibernate中实现二进制和mem类型的字段的数据访问 ................................................. 2

1.1.1

数据库系统的二进制数据和大文本数据 ......................................................................... 2

1.1.2

编程项目相关的POJO类 ............................................................................................. 7

1.1.3

构建数据库表和POJO类之间的映射配置文件 ............................................................. 12

1.1.4

编程相关的DAO类程序代码 ..................................................................................... 15

1.1.5

应用单元测试用例测试本示例的应用效果 .................................................................... 21

1.1.6

执行单元测试用例 ..................................................................................................... 26

1.1.7

包中的Blob和Clob接口 ............................................................................ 29

杨教授工作室,版权所有,盗版必究, 1/30页

1

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

1.1 在Hibernate中实现二进制和mem类型的字段的数据访问

1.1.1 数据库系统的二进制数据和大文本数据

1、二进制数据和大文本数据的存储

对数据库中涉及“mem”类型的字段,一般在设计时定为VARCHAR2类型,但其最大长度为4000 bytes,即可以支持两千汉字以内的长度,而我们在实际的应用中,可能往往会超过两千汉字,从而导致超出的部分不能写入数据库中,因此我们有必要改为大字段类型。

另外的一个问题是,就是在数据库中VARCHAR和VARBINARY的存取是将全部内容从全部读取或写入,对于100K或者说更大数据来说这样的读写方式,远不如用流进行读写来得更现实一些。

通常,要解决超过4000字节的数据,一种做法是将数据写入文件,xml或plain file都可以,数据表中保存文件的路径即可。这种做法不必处理clob(Character Large Object),blob(Binary Large Object)等格式的字段类型,但不易做transaction的控制,而且增加了对文件的处理操作,不算是较佳的一个方案。另一个做法是使用clob, blob等字段类型。下面给出实现的说明和过程。

2、设计一个数据库表

(1)本示例的数据库表结构如下

其中所应该注意的是image类型和ntext类型的含义。在Oracle中如何表示?在MySQL中如何表示?(为longblob和longtext)

杨教授工作室,版权所有,盗版必究, 2/30页

2

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

(2)对应的SQL语句如下

DROP TABLE IF EXISTS `tuser`;

CREATE TABLE `tuser` (

`id` int(11) NOT NULL,

`name` varchar(50) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

`picture` longblob,

`resume` longtext,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

-- ----------------------------

-- Records of tuser

-- ----------------------------

INSERT INTO `tuser` VALUES ('1', '张三', '20',

0xFFD8FFE000104A46494600480000FFDB070A0705070A0C090707090C0D0B0B0C0B0B0D110D0D0D0D0D0D110D0F1011100F0D41E1D1D1D1E22222222222222222222FFDB0D0C0D181010181A1511151A222222222222222222222222222FFCF00C401031101FFC4001C0801FFC404050D杨教授工作室,版权所有,盗版必究, 3/30页

3

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

6249137527275B638492B2B3B4C1E1FFC4001AFFC4002B17181B1D1F0FFDA000C11003F00F481ED41F12B41594839527D43E282AA05044B8DC99861B49CAA43EAD8C329F52D5FFA007527D856264486C39B46FC6EC79B1DB35915D028140A05028140A05028140A05028140A05028141F1690A494A86527A11F4A0D4B51DAB50D99DFDBDA5FEFD31D2BF156370FDDBCDF7FE1D5D4B4B1DF6FA4FB0F9D278172C7C52D1F75D22E6AB12B916E8DD2707461C8EBCED287123A83B8D67BB813E46B8D30CE92735778C42AC0DB25F1293D9481D3CBDBA93D00F9ACEF031FC3D5DCEEB6FF00DEBBDB7C89B724EF8B14FF00AB43272D23FB4A1E657FF2B4A57E46D29502323B1ED520AA8140A05028140A05028140A05028140A05028140A0B7210A7185A12B2DA94920389C6E4E7DC672323F2A0E61AAB59EA1D017103F6B0D4715C3972D7212D3335947BA9121A0868FF65C40CFCD55CDABA639DA657F4BD2F36A2B36A4711FF70E37AD756459B22F17BB0FF0F6EBC32A66F36B6C942DA59ECE29B57AC157A8A463DC5578CB36B7D9B6AB474A56369DEDF3131B4C29B48B86A3D2167B53118C87220F395AC88DE4C8694E63D581D4213EFDEAB66CB14BDA667CAF697166CF8EB5DA2B4AFCCFCFFB6C91E1DEA135E0EF124BD18F6E4B8B43493F1CB4F41F438AA56CF3E2378877F1692BEFF75FF31FE17AD3C57D41A3AE296DA94E5CAD591CD87255BCA53FEED5DC1F8AB5A6D65EBFD11EB7A362CF5DF6EDB7E1DF74DEA0B6EA0B3C7BBDB97BE2C94EE4FC83EE93F515DBC7922D1BC3C56A305B15E6B6F30C956E88A05028140A05028140A05028140A05028140A0D6388BAC3F766CEDBED6152E4381A651EE73DCFE954BA86A2D8E9E9F32E8F48D07EE72EDFC63CB92BB6D81710FC9BB2CC99CF12A53CB3F8B3EC3B015E7AD333CCF97B3ACCD36AD3DB1F08B72B4E9B7596D298C848491BFE4803B63EB5B562598EE9F772B8F5F22B310331D0965B40E884F4159AD0FD3E79E5ABDD751AC950DDD2A5AE34DDD10D4674F53AF9567353D71A2B66777FB2E5D249B3CCB63B92CA55CE673ED9F50ABDA1B7330F31D7A9BED7FECE957DDEABF5A23F31C430F97C3A96DC5A02B6345433B08F7AE8B808303505CD018888FE216F4894D4790BEBB9A63AA3F120127B77A093FBC3744C98CCC86911D0FF291CDFF002C9E72CF99B250BF2F4F4D042B76A0BB8B446119A4ADE71A94E0F2BAF6E5B4E94A518DFB8027F1134175ED4B7D61D909750C7F0C6205A762C13E2BD43D6杨教授工作室,版权所有,盗版必究, 4/30页

4

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

40DA6825EA9764226DB12C174F35D7029A6DD535BF0D9201208F7A04399764DD05AD92D865A659795CEDEB770A5E1682BDDDC0EC714119BD59715C666425B6F6CA625BCD270ACB7E1BB6FF37981C7D282CBBABAF4D4471F2860ED891E601B57D9E50494FABDBE6836C141F68140A05028140A050718FB43CB7D172B76CF430824FE6AAE2F53E6F0F5FF004B563B2DF973E1AA4168051C2BDEB9F157A0B561065EA94A73EF52D6AD27662266A8796309A92B4476B43132EE0E38327B9A9AB557BE4458E14EBC3F3A93655B5DE85FB3B33CA90EA523A06CE6A5D247ADC7EAF3E86C9ACB8BDA52C973762DEB4FDCDFF0CE725133C1B4B614A50ECD38E389CE6BA4E0B296ED6F61BC697B8DDA4D926C4B7DA1A5BCB8D708ADB6B525A6CB9F7482A524F41D3A8A0CBE9A9F64D456685A82145D8CCB6C38D735080EA53E900EDDDEDF068309A964E9787AAAD1A79F8A7C45D9B79B889432DA986F679D6A3E64292A3F201A0D923D82D2D474B2A8EDB984A52A5B884A94AE58C24A8E3A91ED4129D8711D5B6E3CCA16B6BAB4A524129FECE7B5013162A6419096D024286D53A00DE47C1577A0A05BADE37E186C73461CF28F303DC1F9A0A0D9ED18C784671808C72D1E949C81DBBC003091D00A0AA8140A05028140A050732E3A598C88D1A62539032DA8FF0085733A8E3E625E83E9ED46DBD5C0EED0D6CA8E2A8D61E9E72B0B27998A962A82F950D7CCA962156F91486944F5ACA29B3236D63EF451ABD27C02B23B1ED0EDC5C180EE108FD3BD59D155C5EAD939ED57F68EFF0031A1FF007A45FF0005D5D729B6711BFA3DD45FDD733FF1D741C4556C6B4FF0AB4EEB9B4DCA4FEF187DA6908E71285A77AC18C1ACE309DBD7F5F9A0E85C40FE997427FC77FDAA089A8612758F195FD2B7C94FB363816E4C98B05974B21F75446E70EDC13B371FE541F3879A82F70B4B6B6851E43970674EB92D16694E9E62941B6D6A4B5BBF16D281FCE8343BFDBE344E0CC1D591EF52CDFEEAF8F1C4C9594BEADEBDC828CFFA2DBDFF003F9A0F45BB2A2B2B6DB79D436E3A70D254A00ACFC241EA7BD0732D55013ABB8CC349DEA4BED58A35ABC5C78ACBAA683CF97305676E376013FF002FE74131CBBAEC1C17B9C9D3F7A37C7EDCDBADB3713E65A09501D719CF242F23E941A95C6D4DE92D35A5B5958AE72A46A1B9C88899616F975338494153A828248E8AE9F4F7EB8A0D8F89309EBAF1874AD9552E447833234BF1223BAA694A4A1A714465247A80DA7E868347469C0BD2BAE16AB84EE56979EF376567C42F633CB748DD8CF994768EFF00A77A0ED9A42EDBF42D96E7739090EC8B7C575F7DE504EE71C652A2493EE4D06A7C5F7644ED59A4F4B3D25E8B63BB3EF78E532B2D174B69杨教授工作室,版权所有,盗版必究, 5/30页

5

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

4F2DA2A1ECA52B18A0CD70E2D366B1BF77B2DB2F4AB9351A46EF02E2F7AA0EE07EEB7124E0E3DFE0FD6838E42B3BEFF02646B27AE13557AB7CA1E057CF5ED68192D34404F639DE4E4F5A0F42D99F7A4D9E1487705D763B4B593FD65201341F2FB668D78B6BB0640F2AC743F07DAA3CB8FBABB25C19E71DE2D1F0F3F710343CDB3495B4FB7E4FC0E7B115C7BE29ACF2F5DA4D5D72D7873D990B6935984D663D6C62A4857B290DD65A371E17E85B96ACBF222C649115A20CA93F8509FAFF00B47D856D5A774ECADA8D4462AEF3E5EA7B45AE2DAEDCCDBE2276B0C242123F2F73F9D74A94ED8D9E7325E6D3BCA3EA3D2F63D470510EF2C7888ADB897D08DCB461C47A5594149E99AD9AA5DC6DF12E16F916E9A8E64394D2D87DBCA86E6DC4ED52729208C83EC7341AC42E0CF0DA0DCA2CF8B6A4A1F87831C731D520293D9650A514A943A7522833970D2F62B85E60DEA5C7E65CED9BFC13DBD6397CC1857952A095647C8A085AB3877A4355A9A72F50F9AFB030CC84294D3A949EE9DE82938EB412AD5A62D961B02ACFA7996E134942F9391BD216A1EB5E7AAFAF7C9A0E3CFF0005F55DC91FB2DCD3D6BB6AE4484AE7DF63BEB3BDA4AB38663A8A8B5BBA640C0FA0A0EC777D2F63BC4C813AE4C73A55B1CE7427372D3CB70E32AC20807D23A1A087AB7879A4B5616577C87CF7A3F469E4AD6D38907B8DC820E0E7B504FB4E99B15A6C89B2408A866D49414786EE92957AB76EC9567DF34183B2707F87B65BBA6EF6FB6844C6C9531BD6E38868ABB96D0B514A7E9D3A7B5066A6696B1CCBFC2D41218DF77B7A5C44391BD7E40EA4A57E40A08390A3DC50444F0FB49261DD61261FF0D7B714FDD11CC77EF9C5AB72959DF94E49FC381415DCF43698BA69B634D4E8BCDB2464B48663F31C1B43030DF992A0B3803DCD05DD51A3F4F6A880205F23092C215BDA395256858ECA4AD24281FD6829D2DA2F4DE9682B83638DE1DA755B9D3B94B5AD5F2A5AC951FE74119AE1BE8C6F4A3BA51107160797CC762F35EEAADE1CCEFDFCCF5A41F550671888CC78EDC7646D65A484369EF84A4600C9C9ED4174D041BCD92DB7986A893DB0E347F98FCAB4C98E2D1B4A4C19AD8E77AB8DEB5E015EDB5A9FB1A9B96C1ECDAC86DC1FA9C24D50BE9263C3B9A7EAF5B47AB896947823C4E90F7299B6A064FA8C8631FF005E6B15C16497EA346D7A53ECB57275C4BFAA6E28699CF58B0BCCA23E0B8B000FD01AB15D328E6EA9F676BD37A6ACDA76DA8B6DA23A63C56FD93DC9FEB28FB93566B48AF872F2649BCEF2C956CD4A05028140A05028140A05028140A05028140A0507FFD9, '这是用户的个人简历的文本信息字符串.....');

杨教授工作室,版权所有,盗版必究, 6/30页

6

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

1.1.2 编程项目相关的POJO类

1、设计TUser表相匹配的PO类——添加PO类

2、在该PO类中添加如下的成员属性

private Integer id;

private String name;

private Integer age;

private Blob picture;

private Clob resume;

private InputStream userPictureIOStream;

private String userResumeText;

杨教授工作室,版权所有,盗版必究, 7/30页

7

// private int id;

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

3、为这些成员属性添加get/set方法

4、添加hashcode/equals方法

5、POJO类最终的代码

package t;

import ;

import putStream;

import tFoundException;

import tream;

import ;

import ;

杨教授工作室,版权所有,盗版必究, 8/30页

8

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

public class TUser {

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

@Override

public int hashCode() {

}

final int prime = 31;

int result = 1;

result = prime * result + ((age == null) ? 0 : de());

result = prime * result + ((id == null) ? 0 : de());

result = prime * result + ((name == null) ? 0 : de());

result = prime * result + ((picture == null) ? 0 : de());

result = prime * result + ((resume == null) ? 0 : de());

return result;

if (obj == null)

return false;

if (getClass() != ss())

return false;

TUser other = (TUser) obj;

if (age == null) {

if ( != null)

return false;

} else if (!())

return false;

if (id == null) {

杨教授工作室,版权所有,盗版必究, 9/30页

9

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

if ( != null)

return false;

} else if (!())

return false;

if (name == null) {

if ( != null)

return false;

} else if (!())

return false;

if (picture == null) {

if (e != null)

return false;

} else if (!(e))

return false;

if (resume == null) {

if ( != null)

return false;

} else if (!())

return false;

return true;

}

public Integer getId() {

return id;

}

private void setId(Integer id) {

= id;

}

public String getName() {

杨教授工作室,版权所有,盗版必究,10

10/30页

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

return name;

}

public void setName(String name) {

= name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

= age;

}

public Blob getPicture() {

return picture;

}

public void setPicture(Blob picture) {

e = picture;

}

public Clob getResume() {

return resume;

}

public void setResume(Clob resume) {

= resume;

}

private Integer id; // private int id;

private String name;

private Integer age;

private Blob picture;

private Clob resume;

杨教授工作室,版权所有,盗版必究,11

11/30页

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

}

1.1.3 构建数据库表和POJO类之间的映射配置文件

1、针对上面的TUser数据库表的映射文件为()——添加文件

private InputStream userPictureIOStream;

private String userResumeText;

public String getUserResumeText() {

}

public void setUserResumeText(String userResumeText) {

}

public void setUserPictureIOStream(InputStream userPictureIOStream) {

}

public InputStream getUserPictureIOStream() {

}

return userPictureIOStream;

ctureIOStream = userPictureIOStream;

sumeText = userResumeText;

return userResumeText;

public TUser() {

}

杨教授工作室,版权所有,盗版必究, 12/30页

12

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

2、设计该文件的内容

PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"/">

杨教授工作室,版权所有,盗版必究, 13/30页

13

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

或者采用下面的配置

PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"/">

杨教授工作室,版权所有,盗版必究, 14/30页

14

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

3、在中添加对文件的引用。

1.1.4 编程相关的DAO类程序代码

添加一个UserInfoDAO类代码实现将某个图片文件保存到数据库表中

1、添加UserInfoDAO类,包名称为

杨教授工作室,版权所有,盗版必究, 15/30页

15

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

2、UserInfoDAO类的代码

package ;

import ption;

import tream;

import ;

import ;

import ateException;

import n;

import ction;

import ;

杨教授工作室,版权所有,盗版必究, 16/30页

16

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

public class UserInfoDAO {

public UserInfoDAO() {

}

public boolean addOneUserInfo(TUser oneUserInfoPO){

Session session = null;

Transaction tx = null;

try {

session = tSession();

tx = ransaction();

/**

* 下面为具体的数据访问操作的代码

*/

try {

/**

* 获得图片的文件流对象及文件的长度

*/

InputStream userPictureIOStream =rPictureIOStream();

long userPictureFileLength

=rPictureIOStream().available();

/**

* 将所获得图片的文件流对象转换为Blob对象,并保存到oneUserInfoPO对象中

*/

Blob userPicturBlob=Helper().createBlob(userPictureIOStream,

userPictureFileLength);

ture(userPicturBlob);

/**

杨教授工作室,版权所有,盗版必究, 17/30页

17

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

* 获得用户的个人简历文本信息字符串

*/

String userResumeText = rResumeText();

/**

* 获得用户的个人简历文本信息字符串转换为Clob对象,并保存到oneUserInfoPO对象中

*/

Clob userResumeClob=Helper().createClob(userResumeText);

ume(userResumeClob);

} catch (IOException e) {

}

/**

tackTrace();

}

* 将用户信息保存到数据库表中

*/

(oneUserInfoPO);

();

catch (HibernateException he){

}

finally {

/**

由于由Hibernate抛出的异常都视为不可以恢复的,因此应该确保在 finally 代码杨教授工作室,版权所有,盗版必究, 18/30页

18

if (tx != null){

}

throw he;

ck();

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

块中调用close()方法,以关闭掉 Session。

}

public TUser selectOneUserInfo(Integer userID){

TUser oneUserInfoPOFromDB=null;

TUser returnOneUserInfoPO=null;

Session session = null;

Transaction tx = null;

try {

session = tSession();

tx = ransaction();

/**

* 获得从Hibernate查询返回的PO对象(持久对象,并且与Session相关)

*/

oneUserInfoPOFromDB=(TUser)(, userID);

/**

* 将所获得的持久PO对象转存在新的PO对象中

*/

returnOneUserInfoPO=new TUser();

(());

e(e());

ture(ture());

ume(ume());

(());

杨教授工作室,版权所有,盗版必究, 19/30页

19

}

*/

ession();

return true;

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

}

();

catch (HibernateException he){

}

finally {

/**

由于由Hibernate抛出的异常都视为不可以恢复的,因此应该确保在 finally 代码if (tx != null){

}

throw he;

ck();

块中调用close()方法,以关闭掉 Session。

}

3、注意在Hibernate4中的per类

}

}

*/

ession();

return returnOneUserInfoPO;

杨教授工作室,版权所有,盗版必究, 20/30页

20

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

1.1.5 应用单元测试用例测试本示例的应用效果

添加一个对UserInfoDAO类的测试类TestUserInfoDAO

1、类名称为TestUserInfoDAO,包名称为

杨教授工作室,版权所有,盗版必究, 21/30页

21

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

2、编程该测试类的代码

package ;

import putStream;

import tFoundException;

import tputStream;

import ption;

import tream;

import ;

import ;

import eption;

杨教授工作室,版权所有,盗版必究, 22/30页

22

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

import ;

public class TestUserInfoDAO {

private UserInfoDAO oneUserInfoDAO=null;

public TestUserInfoDAO() {

}

public void testAddOneUserInfo(){

}

杨教授工作室,版权所有,盗版必究, 23/30页

23

oneUserInfoDAO=new UserInfoDAO();

/**

* 下面的代码是构建出测试用的参数

*/

TUser oneUserInfoPO= new TUser();

(20);

e("张三");

FileInputStream userPictureIOStream=null;

try {

userPictureIOStream = new FileInputStream("E:");

} catch (FileNotFoundException e) {

}

tackTrace();

String userResumeText="这是用户的个人简历的文本信息字符串.....";

rPictureIOStream(userPictureIOStream);

rResumeText(userResumeText);

/**

* 下面的代码是调用addOneUserInfo方法实现保存数据

*/

UserInfo(oneUserInfoPO);

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

public void testSelectOneUserInfo() {

int userID=1;

/**

* 获得数据库表中返回的PO对象

*/

TUser oneReturnUserInfoPO=OneUserInfo(userID);

/**

* 从所获得的PO对象中提取出各个成员属性数据值

*/

int userAge=();

String userName=e();

Blob userPicturBlob=ture();

Clob userResumeClob= ume();

/**

* 将所获得的各个成员属性数据值打印显示

*/

try {

n("姓名:"+userName+",年龄:"+userAge+"简历:"+

String((long)1,

(int)()));

} catch (SQLException e) {

}

/**

* 将所获得的用户图片的Blob对象转存为图片文件

*/

InputStream userPictureInputStream=null;

try {

杨教授工作室,版权所有,盗版必究, 24/30页

24

tackTrace();

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

{

userPictureInputStream = aryStream();

} catch (SQLException e) {

}

tackTrace();

FileOutputStream userPictureOutputStream=null;

try {

userPictureOutputStream = new FileOutputStream("E:");

} catch (FileNotFoundException e1) {

}

tackTrace();

byte[] pictureDataByteBuffer=null;

int dataLengthPerRead;

try{

pictureDataByteBuffer=new byte[ble()];

while((dataLengthPerRead=(pictureDataByteBuffer))!=-1)

(pictureDataByteBuffer,0,dataLengthPerRead);

}

();

();

}catch (IOException e) {

}

public static void main(String[] args) {

TestUserInfoDAO oneTestUserInfoDAO=new TestUserInfoDAO();

//dOneUserInfo();

杨教授工作室,版权所有,盗版必究, 25/30页

25

}

tackTrace();

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

}

}

lectOneUserInfo();

1.1.6 执行单元测试用例

1、修改文件

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"/dtd/">

name="">jdbc:mysql://localhost:3306/DataBase?useUnicode=true&characterEncoding=utf-8

true

杨教授工作室,版权所有,盗版必究, 26/30页

26

root

root

ialect

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

tion.C3P0ConnectionProvider

20

2

5000

100

3000

2

false

否则将会出现下面的错误

杨教授工作室,版权所有,盗版必究, 27/30页

27

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

如果存入的文件大于mysql默认的 max_allowed_packet值。可以采用下面的解决办法:在mysql安装目录下的文件中的最后一行添加

max_allowed_packet = 10M(也可以设置自己需要的大小)。

2、执行测试程序

杨教授工作室,版权所有,盗版必究, 28/30页

28

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

1.1.7 包中的Blob和Clob接口

1、Blob接口

The representation (mapping) in the Java programming language of an SQL BLOB value. An

SQL BLOB is a built-in type that stores a Binary Large Object as a column value in a row of a

database table.

利用Blob接口中的getBinaryStream()方法,可以获得其InputStream对象,从而获得二进制的数据流,转换为某个输出流。

下面的代码实现从Blob字段中获得二进制数据并且保存到某个文件中。

Blob img=ture();

InputStream is=aryStream();

FileOutputStream

FileOutputStream("C:/temp/HibernateTest/classes/");

byte[] buf=new byte[1024];

int len;

while((len=(buf))!=-1)

{

(buf,0,len);

}

();

();

2、Clob接口

The mapping in the Java programming language for the SQL CLOB type. An SQL CLOB is a

built-in type that stores a Character Large Object as a column value in a row of a database table.

杨教授工作室,版权所有,盗版必究, 29/30页

29

fos=new

杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料

利用Clob接口中的getSubString(long pos, int length)方法可以获得该内容的拷贝。参考下面的代码

Clob resume=ume();

n(String(1,(int)()));

利用Clob接口中的getCharacterStream()方法,可以获得针对该内容的对象,从而利用字符流将该长文本内容保存为一个字符文件。

3、Hibernate 3.X版本的系统中ate 包中的Hibernate类

public static Blob createBlob(InputStream stream) throws IOException方法

public static Clob createClob(String string)方法

注意:在Hibernate 4.X中已经改变了这样的做法

4、下面为Hibernate 3.X版的代码

FileInputStream imgis= new

FileInputStream("C:/temp/HibernateTest/classes/");

Blob img=Blob(imgis);

ture(img);

Clob resume=Clob("ikytklttiutluiiutluyliuyluyluylyuyliuyl");

杨教授工作室,版权所有,盗版必究, 30/30页

30