- 1、本文档共241页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[英语学习]java_4
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 语法:--调用(call) CallableStatement cstm = conn.prepareCall(sqlString); 例如: CallableStatement cstm = conn.prepareCall(“{call return_student(?,?)}”); Cstm.setString(1,”8888”); Cstm.registerOutParameter(2,Types.REAL); Cstm.execute(); Float gpa = cstm.getFloat(2); 见实例com.sitech.model.util.CallableProcedure CallableStatement 需要并发控制几种情况 操作关系数据库时为了确保并发用户在存取同一数据库对象时的正确性(即无丢失更新、可重复读、不读“脏”数据,无“幻像”读) 从SQL中删除了数据,自己可以看到,但别人不能看到,其实我们是可以控制的。由事务引发的问题(多人操作) 无丢失更新,在跟新数据时不会有相关信息的操作一面造成,并发操作影响的纪录没有被更新。 脏数据(在没有commit时,别人已经读取数据了,然后又rollback了) 不可重复读(当用户读取一表数据的同时,有可能有新的数据插入造成读取的数据不真实。) 幻影读取(公司统计,两次不同的操作,可能数据已经发生变化) 各种并发问题的解决方式 脏数据控制方式 A刚插入了一条记录,B读到了记录,但是A又回退了。 对于这种情况我们要控制一个事务当中的多个操作在提交时才可能影响到数据库 不可重复读 在读取的时候不可以被修改 不可重复读,效率低,相当于把读取的也锁住了 幻影读取的并发控制方式 操作时锁住整张表,别人不可以插入数据 脏数据读取的并发控制 可用简单事务隔离级别来控制 数据库并发控制 数据库并发控制主要分为两大类 通过数据库端的锁控制实现(较高效) Java transaction api事务实现 并发控制——jta事务通过设定隔离级别实现 通过UserTransaction对象实现的 查看和设置隔离层次级别的方法: Connection.getTransactionIsolation Connection.setTransactionIsolation 事务级别: // 表封锁 // 禁止读脏数据,禁止重复读,禁止影像读 conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); // 行封锁 // 禁止读脏数据,禁止重复读 conn.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); // 禁止读脏数据(默认) conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); // 允许读 conn.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); // 禁止事务操作和加锁 conn.setTransactionIsolation(Connection.TRANSACTION_NONE); 并发控制 注意,性能会降得很低。 所以,很多情况下我们会采用默认的就可以了 必须要先支持事务,才会支持并发控制 JNDI背景知识—— JDBC 2.0标准扩展 JNDI全称 Java Naming and Directory Interface 命名及目录服务、是定义访问目录与命名服务的一种方式(就像我们之前学的servlet映射一样通过一系列的命名与配置,我们可以直接通过这个映射名字来找到配置的资源) Jndi也可以说是一些基与资源服务的API 这些接口提供数据库连接池(Connection pooling)的功能 如何了解JNDI——没有jndi是我们怎么做的 Jdbc直链: Class.forName(oracle.jdbc.driver.OracleDriver); //取得连接 conn = DriverManager. getConnection(jdbc:oracle:thin:@:1521:site
文档评论(0)