我遇到这么一个业务:用户每次会给出一个List,里面放了一些某类型实体。实体只对应一张表,这张表呢有一个业务主键,还有个自然主键。自然主键那列上弄了个唯一约束现在想达到这样一个效果:持久化用户给出的List的时候,遇到与数据库中重复的(自然主键重复)就跳过,继续往下走。
但是呢,我在发现session一旦发生异常就不能正常终止了,提示session不能在发生异常后执行flush。我想了想,数据库都是并发的,不可能通过“检查-判断-行动”这个逻辑。。数据库默认的事务隔离级别也帮不了什么忙但是我又不能锁住整张表用hibernate的悲观锁的话不知行不行,我还没试,请各路大侠给个思路~~~~~~~~~~~~~~~~
但是呢,我在发现session一旦发生异常就不能正常终止了,提示session不能在发生异常后执行flush。我想了想,数据库都是并发的,不可能通过“检查-判断-行动”这个逻辑。。数据库默认的事务隔离级别也帮不了什么忙但是我又不能锁住整张表用hibernate的悲观锁的话不知行不行,我还没试,请各路大侠给个思路~~~~~~~~~~~~~~~~
解决方案 »
- ubuntu装软件命令
- 关于向SWT Table中显示至少7万行数据怎么实现
- javax.el.PropertyNotFoundException 是怎么回事儿 (Property 'AdminName' not found……)
- WebService新手,请教WebService需要什么包
- jsp超级链接传中文
- JsonArray.fromObject()出错,提示session关闭
- 诚聘:开发工程师
- 我下载并安装了JBuilder9,为什麽不能开发jsp and servlet?
- springboot整合mybatis-plus找不到mapper文件
- @Autowired一直为空 小白求解
- 请教JAVA FTP上传的一个问题
- jsp+hibernate开发 实体问题
public void test() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = null;
PreparedStatement ps = null;
String sql = "insert into user(name, birthday) values(?,?)";
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hibernate", "root", "0083");
ps = conn.prepareStatement(sql);
String[] users = new String[]{"123", "222"};
for(String str : users){
try {
ps.setString(1, str);
ps.setDate(2, new Date(System.currentTimeMillis()));
ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ps != null){
ps.close();
}
if(conn != null){
conn.close();
}
}