jdbc没有,也许某种特定的DBMS有提供也说不定
解决方案 »
- 邮件条数如何实现动态显示
- AnnotationConfiguration().buildSessionFactory()的一个问题
- 查看mysql信息为乱码...
- 帮忙查询问题
- 关于spring问题,关于SSH集成后的事务,很奇怪,想请教一下
- java查询数据库所有表的问题,请各位大大进来帮帮忙
- 如何在本页面提交表单不刷新页面从数据库获取数据
- 急!急!急!有关<<Thinking in JAVA>>的问题
- 使用用RATIONAL ROSE,设计好一个类后, 怎样生成某种编程语言(比如是JAVA)的对应程序代码呢?
- j2ee初学, 哪本书入门好? 几天前发了没人RE:(
- red hat 8.0上能装weblogic么?
- 文件下载
也许以后会有吧
期待ing...
dbcon.setAutoComit(false);如果超做完后,没有提交或回滚。那么这个表就处于锁定状态啊。
jdbc API支持事务对数据库的加锁,并且提供了5种操作支持,2种加锁密度。5种支持:static int TRANSACTION_NONE = 0; →禁止事务操作和加锁。static int TRANSACTION_READ_UNCOMMITTED = 1;→允许脏数据读写(dirty reads)、重复读写(repeatable reads)和影象读写(phntom reads)static int TRANSACTION_READ_COMMITTED = 2;→禁止脏数据读写(dirty reads),允许重复读写(repeatable reads)和影象读写(phntom reads)static int TRANSACTION_REPEATABLE_READ = 4;→禁止脏数据读写(dirty reads)和重复读写(repeatable reads),允许影象读写(phntom reads)static int TRANSACTION_SERIALIZABLE = 8;→禁止脏数据读写(dirty reads)、重复读写(repeatable reads)和允许影象读写(phntom reads)2种密度:最后一项为表加锁,其余3~4项为行加锁。 脏数据读写(dirty reads):当一个事务修改了某一数据行的值而未提交时,另一事务读取了此行值。倘若前一事务发生了回滚,则后一事务将得到一个无效的值(脏数据)。重复读写(repeatable reads):当一个事务在读取某一数据行时,另一事务同时在修改此数据行。则前一事务在重复读取此行时将得到一个不一致的值。影象读写(phantomreads):当一个事务在某一表中进行数据查询时,另一事务恰好插入了满足了查询条件的数据行。则前一事务在重复读取满足条件的值时,将得到一个额外的“影象“值。Jdbc根据数据库提供的缺省值来设置事务支持及其加锁,当然,也可以手工设置:setTransactionIsolation(TRANSACTION_READ_UNCOMMITTED);可以查看数据库的当前设置:getTransactionIsolation()需要注意的是,在进行手动设置时,数据库及其驱动程序必须得支持相应的事务操作操作才行。上述设置随着值的增加,其事务的独立性增加,更能有效的防止事务操作之间的冲突;同时也增加了加锁的开销,降低了用户之间访问数据库的并发性,程序的运行效率也回随之降低。因此得平衡程序运行效率和数据一致性之间的冲突。一般来说,对于只涉及到数据库的查询操作时,可以采用TRANSACTION_READ_UNCOMMITTED方式;对于数据查询远多于更新的操作,可以采用TRANSACTION_READ_COMMITTED方式;对于更新操作较多的,可以采用TRANSACTION_REPEATABLE_READ;在数据一致性要求更高的场合再考虑最后一项,由于涉及到表加锁,因此会对程序运行效率产生较大的影响。另外,在oracle中数据库驱动对事务处理的缺省值是TRANSACTION_NONE,即不支持事务操作,所以需要在程序中手动进行设置。