Oracle是强大但在方便易用性上实在不敢恭维,自己搞了套LookAndFeel的Swing控制台奇丑无比且不好用(我在这并非抨击Swing,只是遗憾Oracle没有用好Swing,我可是Swing的坚定拥护者,过一阵我会专门开个Swing专栏),我真搞不懂Oracle的JDBC驱动就不能再封装一层,底层透明的自动插入empty_blob()/empty_clob(),不过如果你是用mysql,那么恭喜你mysql的大字段操作是很舒服的,不需要做任何而外的处理,且不要求启事务。
CREATE TABLE `emhookup` (
`picid` int(10) unsigned NOT NULL auto_increment,
`picname` varchar(50) NOT NULL default '0',
`picmodifyid` int(10) unsigned NOT NULL default '0',
`picturedata` longblob NOT NULL,
`pictype` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`picid`),
UNIQUE KEY `picid` (`picid`,`picname`),
KEY `picid_2` (`picid`)
) TYPE=MyISAM;
sql.append(" insert into emhookup ");
sql.append(" (picmodifyid, picname, picturedata, pictype)values(?,?,?,?) ");
ps = con.prepareStatement(sql.toString());
ps.setInt(1, picmodifyid);
ps.setString(2, picName);
ps.setObject(3, DataProcess.toByteByGZIP(data));
ps.setInt(4, data.picType);
ps.executeUpdate();
ps.close();
不过使用Mysql存储大对象有个问题必须注意:【max_allowed_packet】属性必须设置为可能的最大数,否则如果一个字段的数据大于max_allowed_packet的话将无法进行保存和获取。
在linux下拷贝配置文件 cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
将my.cnf中的max_allowed_packet该成需要的大小即可
记得在《blob、clob字段小结(一)》中我提到存储速度问题,是这样的:刚开始我用一张表存储一张图纸,用一条记录存储一个图元,结果在存储几万个图元的大图纸是出现了无法忍受的速度问题,每张图纸打开需要二十秒以上,进行了JDBC的各种参数优化都无济于事,后来我改成一张图纸就存一条记录,也就是说所有图纸上的说有内容都在一个blob字段中,结果打开一张几万个图元的图纸都不会超过三秒的时间。打个比喻:背着书包上学快,还是一本一本的来回那书快啊,虽然书是一样多的,虽然一本书比一包书轻,但是...
大字段还有很多用途的,让我们在现实中慢慢挖掘它的潜力吧
分享到:
相关推荐
这篇博客文章“Hibernate操作Oracle中Clob、Blob字段小结”可能会探讨如何在Hibernate中有效地处理这两种类型的数据。 1. **Clob与Blob的理解**: - Clob:Clob是用于存储大量字符数据的类型,例如长篇文章、XML...
在Hibernate的XML映射文件中,你需要为这个Clob字段指定映射规则,例如: ```xml <column name="SUMMARY_CLOB" /> ``` **CRUD操作**: 4.2.1 **创建(Create)**: 在创建新记录时,你需要将待存入的文本...
通常,要解决超过4000字节的数据,一种做法是将数据写入文件,xml或plain file都可以,数据...另一个做法是使用clob, blob等字段类型,主要有:采用传统的jbdc方式、把clob以string方式处理、直接使用clob类型三种方案
3. **插入与更新**:当向数据库中插入或更新包含Clob字段的记录时,Hibernate会自动处理这些数据。可以使用`session.save()`或`session.update()`方法,但在实际使用中,我们通常需要使用`session.merge()`,因为它...
1.6 小结 第2章 设计数据库 2.1 数据库设计应考虑的事项 2.1.1 项目规范 2.1.2 设计表 2.1.3 生成发票 2.2 引用完整性 2.2.1 通用完整性规则 2.2.2 特定于数据库的完整性规则 2.3 小结 第3章 SQL基础 ...
1.6 小结 第2章 设计数据库 2.1 数据库设计应考虑的事项 2.1.1 项目规范 2.1.2 设计表 2.1.3 生成发票 2.2 引用完整性 2.2.1 通用完整性规则 2.2.2 特定于数据库的完整性规则 2.3 小结 第3章 SQL基础 ...
1.6 小结 第2章 设计数据库 2.1 数据库设计应考虑的事项 2.1.1 项目规范 2.1.2 设计表 2.1.3 生成发票 2.2 引用完整性 2.2.1 通用完整性规则 2.2.2 特定于数据库的完整性规则 2.3 小结 第3章 SQL基础 ...
1.6 小结 第2章 设计数据库 2.1 数据库设计应考虑的事项 2.1.1 项目规范 2.1.2 设计表 2.1.3 生成发票 2.2 引用完整性 2.2.1 通用完整性规则 2.2.2 特定于数据库的完整性规则 2.3 小结 第3章 SQL基础 ...
6. **@Lob** 和 **@Basic(fetch=FetchType.LAZY)**:结合使用表示字段是大对象(LOB,如Clob或Blob),并且以懒加载的方式获取。 7. **@PersistenceContext**:在SessionBean中注入EntityManager,以管理实体的生命...
- **BLOB和CLOB**:这些大对象类型不宜建立索引,因为它们对性能影响较大,且索引效果不佳。 6. **特殊优化策略**: - **表格分割**:通过分区或分表,将大表拆分成更小的部分,以分散I/O负载,提高查询效率。 -...
### 五、小结 数据库建表语句是数据库设计与管理的基础,尤其是在Oracle这样的关系型数据库管理系统中。通过理解和掌握正确的建表语法,可以有效地创建满足业务需求的数据库表,进而提升数据处理的效率和准确性。在...
### 小结 综上所述,在设计Oracle表时,针对不同数据类型,应根据实际需求选择合适的类型和长度。对于Integer类型,可以根据数据范围选择NUMBER或INTEGER;Long类型已被废弃,建议使用CLOB或BLOB替代;Date类型则...
#### 五、小结 通过上述示例,我们了解了如何使用 Hibernate 注解来快速实现 Java 对象与数据库表之间的映射。这些注解大大简化了实体类的定义,同时也提供了足够的灵活性来处理复杂的业务需求。对于初学者而言,...
- **小结**:总结游标使用的最佳实践。 #### 数据库系统自带函数 - **字符函数**:用于处理字符串数据。 - **由字符获取ASCII码ASCII**:返回字符的ASCII码值。 - **由字符获取UNICODE码**:返回字符的UNICODE...
14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的...
14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的...