hibernante 支持 保存对象后 返回该保存的ID号(省去在查询一次啦)
业务层
public void addEvent(EventVO eventVO) throws BOException
{
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = this.transactionManager.getTransaction(def);
try {
EventEvents eventEvents = new EventEvents();
eventEvents.setUserId(Long.parseLong(eventVO.getUserId()));
eventEvents.setEventName(eventVO.getEventName());
eventEvents.setProvinceId(Long.parseLong(eventVO.getProvinceId()));
eventEvents.setCityId(Long.parseLong(eventVO.getCityId()));
eventEvents.setArea(eventVO.getArea());
//转换日期型 入库
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
// eventEvents.setStartTime(sdf.parse(eventVO.getStartTime()));
// eventEvents.setEndTime(sdf.parse(eventVO.getEndTime()));
// eventEvents.setStopTime(sdf.parse(eventVO.getStopTime()));
eventEvents.setLimitNumber(Long.parseLong(eventVO.getLimitNumber()));
eventEvents.setJoinType(Long.parseLong(eventVO.getJoinType()));
eventEvents.setTemplate(eventVO.getTemplate());
eventEvents.setTypeId(Long.parseLong(eventVO.getTypeId()));
//处理 大字段 CLOB
eventEvents.setEventContent(Hibernate.createClob(" "));
eventRepository.addEvent(eventEvents); -----------------------------------------------------------见第二部分
System.out.println("##############"+eventEvents.getEventContent());
/* 处理clob字段 */
SerializableClob sc = (SerializableClob)eventEvents.getEventContent();//
Clob wrapclob = sc.getWrappedClob();// 这里的Clob是java.sql.Clob
CLOB clob = (CLOB) wrapclob;// 这里的CLOB是oracle.sql.CLOB
Writer writer = clob.getCharacterOutputStream();
writer.write(eventVO.getEventContent());// kybasicInfo.getInfoContentToString()是String类型的,在action里就是传这个进来,然后再通过文件流形式写成CLOB字段中
writer.close();
transactionManager.commit(status);
} catch (Exception e) {
transactionManager.rollback(status);
e.printStackTrace();
}
}
第二部分
/**
* 新增活动,返回活动ID
*/
public void addEvent(EventEvents eventEvents) throws DAOException
{
this.saveReturnID(eventEvents);
}
第三部分
/**
* 保存实体,返回ID
*
* @param o
* @return
*/
public Object saveReturnID(Object o) throws DAOException {
Object id = null;
try {
id = this.getMyHibernateTemplate().save(o);
this.getMyHibernateTemplate().flush(); --------------------------- 大字段处理
this.getMyHibernateTemplate().refresh(o); ---------------------------大字段处理
} catch (Exception e) {
throw new DAOException(e, this.getClass());
}
return id;
}
update==>
public void modifyEvent(EventEvents event) throws DAOException
{
this.update(event);
this.getMyHibernateTemplate().refresh(event,LockMode.UPGRADE);//锁定
}
public void update(Object o) throws DAOException {
try {
// BeanCodingConvert.ObjectConvert(o, BeanCodingConvert.GBK2ISO);
this.getMyHibernateTemplate().update(o);
this.getMyHibernateTemplate().flush();
} catch (Exception e) {
e.printStackTrace();
throw new DAOException(e, this.getClass());
}
}
读取CLOB ==>String
// CLOB 格式 转换 = string
try {
Clob clob = expert.getExpertInfor();
expertInfor = IOUtils.toString(clob.getCharacterStream());
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
分享到:
相关推荐
总结来说,Hibernate处理大字段涉及到数据类型的选用、映射配置、加载策略以及性能优化等多个方面。理解并灵活运用这些知识点,能够帮助我们在实际项目中更好地管理和使用大字段,同时兼顾性能和用户体验。
但随着数据库技术的发展,越来越多的数据库厂商提供了更加简单的方式来操作这些大字段。例如,Oracle数据库提供了支持以String方式处理Clob的新驱动程序。 在Hibernate框架中,可以直接将数据库的Clob字段映射为...
### Spring与Hibernate处理大字段(CLOB/BLOB) 在企业级应用开发中,经常会遇到需要存储大量文本或二进制数据的情况,这时就需要用到数据库的大字段类型如CLOB(Character Large Object)和BLOB(Binary Large ...
1. **保存/更新大字段**:在保存或更新实体时,使用SessionFactory的`save()`或`update()`方法,Hibernate会自动处理大字段的存储。 ```java Session session = sessionFactory.openSession(); Transaction tx = ...
在提供的实例中,开发者可能已经展示了如何配置Spring1.2和Hibernate2来处理大字段,包括如何创建映射文件,如何定义实体类,以及如何在服务层和DAO层进行操作。学习这个实例可以帮助理解如何在实际项目中解决类似的...
在处理大字段时,Hibernate提供了Blob和Clob类型的支持,用于存储大对象,如文本、图片等。 针对大字段的处理,通常有以下几种策略: 1. **字段分片**:如果一个字段过大,可以将其拆分为多个较小的字段存储,降低...
一个完整的工程,主要功能为:spring+hbernate对clob、blob字段的处理 包括:数据脚本、典型的SSH框架处理,以及spring、hibernate数据批量保存等功能源码、所用到的lib包 数据环境为:oracle 10G 开发:Mycelipse5.1...
异构数据库的导入导出一直是个大难题,一般的工具配置复杂,尤其是不支持LOB这样的大字段数据,我们的这个工具不仅配置简单,而且具有以下几个特点。 1、速度非常快,这个因为取决于系统环境,这个只有谁用...