package com.sise.spring.dao.impl;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.support.AbstractLobCreatingPreparedStatementCallback;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer;
import org.springframework.jdbc.support.lob.LobCreator;
import org.springframework.jdbc.support.lob.LobHandler;
import com.sise.spring.dao.OrderDao;
import com.sise.spring.entiey.Order;
public class OrderDaoImpl extends JdbcDaoSupport implements OrderDao {
private LobHandler lobHander;
//主键值产生器
private DataFieldMaxValueIncrementer incre;
public void setLobHander(LobHandler lobHander) {
this.lobHander = lobHander;
}
public void setIncre(DataFieldMaxValueIncrementer incre) {
this.incre = incre;
}
public void addOrder(final Order order){
String sql = "insert into t_order(order_id,user_id,order_con) values(?,?,?)";
getJdbcTemplate().execute(sql,new AbstractLobCreatingPreparedStatementCallback(this.lobHander) {
@Override
protected void setValues(PreparedStatement ps, LobCreator lobCreator)
throws SQLException, DataAccessException {
ps.setInt(1, incre.nextIntValue());
ps.setInt(2, order.getUserId());
lobCreator.setClobAsString(ps, 3, order.getOrderCon());
}
});
}
public List getOrders(int orderId) {
// TODO Auto-generated method stub
return null;
}
}
这个小小的例子主要的是解决并发的问题,在下面的例子我会做一个全部表的主键放到一个序列表上面来统一管理
我给出部分代码,全部代码我放在附件里
OrderDaoImpl.java
分享到:
相关推荐
在Java的持久化框架Hibernate中,无主键表映射是一种特殊情况,主要处理那些在数据库中没有明确单一主键的表。这种情况通常出现在那些通过多个字段共同唯一标识一条记录的复合主键(Composite Key)场景。本文将详细...
2. **Increment方式**:`<generator class="increment"/>` 这种方式由Hibernate自己管理主键的递增,而不是依赖数据库。它维护一个全局计数器,每次保存新实体时,计数器加一并作为主键值。但是,这种方式在多线程或...
数据库主键设计的五种方法 数据库主键设计是数据库设计中一个非常重要的环节,好的主键设计可以提高数据库的性能和可扩展性。本文将介绍五种常见的主键设计方法,每种方法都有其优点和缺陷。 第一种:编号作主键 ...
SQL判断表是否有主键,如何添加主键和移除主键 这是一个很好的例子个大家分享,以后我会及时更新
数据库主键是数据库设计中的核心概念,它是表中一列或多列的组合,用于唯一地标识每一行数据,确保数据的唯一性和完整性。...理解并熟练掌握主键生成原理和方法,对于提升数据库设计水平和优化数据管理至关重要。
在Java的持久化框架Hibernate中,主键策略是管理数据库记录唯一标识的重要组成部分。主键策略定义了如何生成和管理实体对象的主键值。在本篇内容中,我们将深入探讨"Hibernate主键策略-sequence",并结合标签中的...
主键和外键都是Oracle等关系型数据库管理系统(RDBMS)中的重要概念。 **主键**是定义一个表中起主要作用的数据项,它确保这些数据项在表中的唯一性。主键的特性包括: 1. 唯一性:主键的值在表中必须是唯一的,不...
在Java的持久化框架中,如JPA(Java Persistence API)和Hibernate,主键生成策略是数据模型设计的重要部分。主键通常是表中唯一标识记录的一列或一组列,用于确保数据的完整性和唯一性。本篇文章将深入探讨JPA的4种...
在IT领域的数据库设计与操作中,处理具有多主键(复合主键)的表是一项常见但又复杂的任务。...对于开发者而言,掌握多主键的管理和操作,不仅能够提高数据处理的灵活性,还能增强系统的健壮性和安全性。
JPA 是一种Java规范,它提供了一种标准的方式来管理和持久化Java对象到关系数据库。通过使用JPA,开发者可以避免直接编写SQL,从而专注于业务逻辑。JPA的核心是实体(Entity),每个实体都对应数据库表的一行,而...
总结,复合主键在Hibernate中是通过`@Embeddable`和`@EmbeddedId`注解来实现的,它允许我们在多字段的唯一标识场景下有效地管理数据。通过理解和正确配置复合主键,能够使我们的数据模型更符合实际业务需求,提高...
- 需要注意事务管理,确保在进行插入、更新或删除操作时正确开启和提交事务。 - 查询操作中,如果只根据联合主键的部分字段进行查询,可能会返回多条记录,因此在设计查询逻辑时需格外小心。 总的来说,Hibernate...
1. **缺少主键**:有些表设计时没有明确指定主键,这可能导致后续的数据管理和查询变得困难。例如,对于计算工件等类型的表格,如果缺乏有效的主键,则难以保证数据的唯一性。 - **解决方法**:根据表的具体用途...
"Hibernate复合主键" Hibernate复合主键是指在 Hibernate ...Hibernate 复合主键是一种强大的工具,可以帮助我们更好地管理数据。通过使用复合主键,我们可以提高数据的一致性和查询效率,并且避免了主键冲突的可能。
这个策略使用一个单独的表来管理主键生成。在Hibernate中,这个表通常有两列:一个是序列号,另一个是用于同步的版本号。适用于多用户环境,确保并发时主键的唯一性。配置时,使用`<generator class="table">`。 4...
在Hibernate中,通过定义`@Embeddable`的复合主键类和`@EmbeddedId`的实体类,我们可以方便地管理和操作这些复合主键的实体。在保存和查询时,需注意正确设置复合主键的值,以确保数据的正确性。希望这个实例能帮助...
### JPA注解实现联合主键 在关系型数据库中,单个字段作为主键的情况较为常见,但在某些场景下,我们需要使用多个字段共同作为主键来唯一标识表中的每一条记录,这就是所谓的“联合主键”。而在Java持久化框架...
### 关于主键的添加、更换、删除的总结 ...通过对这些操作的理解和掌握,可以更灵活地管理和维护数据库中的数据结构。需要注意的是,在进行主键相关的操作时,一定要谨慎小心,以免造成数据丢失或不一致等问题。
Activiti5 的主键问题解决方案 Activiti5 是 JBPM4 的升级版本,已经将自己的表划分为 4 类:运行时、通用数据、历史数据、流程相关数据。但是,Activiti5 的默认主键策略在高并发的情况下会出现主键重复的问题。...