《利用JDBC和JTA访问数据库和管理全局事务.pptx》由会员分享,可在线阅读,更多相关《利用JDBC和JTA访问数据库和管理全局事务.pptx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、经典Java EE课程段鹏松第第第第4 4章章章章 利用利用利用利用JDBCJDBC和和和和JTAJTA访问数据库和管理全局事务访问数据库和管理全局事务访问数据库和管理全局事务访问数据库和管理全局事务掌握掌握WebLogic配置数据源操作配置数据源操作掌握掌握JBoss配置数据源操作配置数据源操作了解事务和了解事务和JTA相关知识相关知识了解了解EJB的事务管理方法的事务管理方法课程目标课程目标目目 录录JDBC和容器管理的数据源和容器管理的数据源事务和事务和JTA事务隔离和传播属性的设置事务隔离和传播属性的设置EJB的事务管理的事务管理事务超时设置事务超时设置概述概述为了更好地管理数据库连接
2、,实际项目为了更好地管理数据库连接,实际项目中通常都会考虑使用中通常都会考虑使用数据源数据源来管理数据来管理数据库连接。库连接。在基于在基于Spring的轻量级的轻量级Java EE企业应企业应用中,通常会选择让用中,通常会选择让Spring容器来管理容器来管理数据源。数据源。JDBCJDBC概述概述JDBC(Java Data Base Connectivity,java数据库连接)是一种用数据库连接)是一种用于执行于执行SQL语句的语句的Java API,可以为多,可以为多种关系数据库提供统一访问,它由一组用种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。语言编写的类和
3、接口组成。基于基于JDBC的驱动程序由数据库厂商提供的驱动程序由数据库厂商提供数据库连接池的概念数据库连接池的概念为了避免频繁地打开、关闭数据库造成的资为了避免频繁地打开、关闭数据库造成的资源浪费。源浪费。使用使用WebLogicWebLogic配置数据源配置数据源实际操作演示实际操作演示使用使用WebLogicWebLogic配置数据源配置数据源%/初始化初始化Context,使用,使用InitialContext初始化初始化ContextContext ctx=new InitialContext();/通过通过JNDI查找数据源,该查找数据源,该JNDI就是部署数据源所指定的就是部署数据
4、源所指定的JNDIDataSource ds=(DataSource)ctx.lookup(firstds);/获取数据库连接获取数据库连接Connection conn=ds.getConnection();/获取获取StatementStatement stmt=conn.createStatement();/执行查询,返回执行查询,返回ResulteSet对象对象ResultSet rs=stmt.executeQuery(select*from item);while(rs.next()out.println(rs.getString(1)+ +rs.getStr
5、ing(2)+);rs.close();stmt.close();conn.close();%使用使用WebLogicWebLogic配置数据源配置数据源测试结果测试结果使用使用JBossJBoss配置数据源配置数据源实际操作演示实际操作演示使用使用JBossJBoss配置数据源配置数据源%/初始化初始化Context,使用,使用InitialContext初始化初始化ContextContext ctx=new InitialContext();/JBoss中实际中实际JNDI名字必须在配置的名字必须在配置的JNDI之前加上之前加上java:/前缀前缀DataSource ds=(DataS
6、ource)ctx.lookup(java:/firstds);/获取数据库连接获取数据库连接Connection conn=ds.getConnection();/获取获取StatementStatement stmt=conn.createStatement();/执行查询,返回执行查询,返回ResulteSet对象对象ResultSet rs=stmt.executeQuery(select*from item);while(rs.next()out.println(rs.getString(1)+ +rs.getString(2)+);rs.close();stm
7、t.close();conn.close();%注意事项注意事项Jboss默认并不提供数据库驱动程序,需默认并不提供数据库驱动程序,需要手动把驱动程序拷贝到要手动把驱动程序拷贝到Jboss的的serverdefaultlib路径下。路径下。JBoss服务器将会自动加载该路径下的数服务器将会自动加载该路径下的数据库驱动程序。据库驱动程序。使用使用JBossJBoss配置数据源配置数据源测试结果测试结果目目 录录JDBC和容器管理的数据源和容器管理的数据源事务和事务和JTA事务隔离和传播属性的设置事务隔离和传播属性的设置EJB的事务管理的事务管理事务超时设置事务超时设置概述概述事务控制也是事务控制
8、也是Java EE应用中必须处理的问题,应用中必须处理的问题,它可以保证一系列数据库操作能够准确完成它可以保证一系列数据库操作能够准确完成事务分为局部事务和全局事务(分布式事务)事务分为局部事务和全局事务(分布式事务)JTA,即,即Java Transaction API,提供了事务,提供了事务划分的标准接口。划分的标准接口。JTA事务和事务和JDBC事务的区别:事务的区别:JTA事务可以跨连接事务可以跨连接JDBC仅限于一个连接仅限于一个连接事务的基本概念事务的基本概念事务是由一步或几步数据操作序列组成的事务是由一步或几步数据操作序列组成的逻辑执行单元,这系列操作要么全部完成,逻辑执行单元,
9、这系列操作要么全部完成,要么全部放弃执行。要么全部放弃执行。事务的四个特性事务的四个特性原子性(原子性(Atomicity)一致性(一致性(Consistency)隔离性(隔离性(Isolation)持续性(持续性(Durablity)分布式事务处理、分布式事务处理、XAXA规范和规范和2PC2PC协议协议分布式事务:涉及到多个数据库的事务分布式事务:涉及到多个数据库的事务XA规范规范理论基础即为理论基础即为2PC协议协议2PC协议协议2 Phase CommitWeblogic服务器已经实现了对全局性事务服务器已经实现了对全局性事务的单阶段优化的单阶段优化使用使用JTAJTA全局事务保证多数
10、据库的全局事务保证多数据库的一致性一致性JTA事务由事务由Java EE事务管理器控制,它事务管理器控制,它可以保证多个数据库更新的一致性,通过可以保证多个数据库更新的一致性,通过JTA即可实现全局事务控制即可实现全局事务控制在在WebLogic中使用中使用JTA实际操作演示实际操作演示在在JBoss中使用中使用JTA实际操作演示实际操作演示操作注意操作注意1、用、用scott用户访问用户访问2、oracle每个数据库都每个数据库都 有有scott用户,需用户,需要先解锁,更改密码;要先解锁,更改密码;scott用户名下面默用户名下面默认有一个认有一个dept数据表数据表,不用再建立。,不用再
11、建立。解锁解锁alter user scott account unlock改密改密alter user scott identified by orcl1233、页面的、页面的errorPage不能为空,否则掩盖不能为空,否则掩盖住真正的异常。住真正的异常。执行结果执行结果目目 录录JDBC和容器管理的数据源和容器管理的数据源事务和事务和JTA事务隔离和传播属性的设置事务隔离和传播属性的设置EJB的事务管理的事务管理事务超时设置事务超时设置概述概述事务控制是保证应用程序底层数据完整性事务控制是保证应用程序底层数据完整性的重要手段,但事务控制对程序性能的影的重要手段,但事务控制对程序性能的影响
12、也是很大的,如果应用程序的事务属性响也是很大的,如果应用程序的事务属性设置的不合适,应用程序的性能将会大大设置的不合适,应用程序的性能将会大大降低。降低。并发访问和隔离并发访问和隔离根据根据JDBC规范的定义,事务的隔离设置规范的定义,事务的隔离设置一共分为一共分为5个级别:个级别:TRANSACTION_NONETRANSACTION_READ_UNCOMMITTEDTRANSACTION_READ_COMMITTEDTRANSACTION_REPEATBLE_READTRANSACTION_SERIALIZABLE调用调用Connection接口的接口的setTransactionIsol
13、ation()进行设置进行设置 事务属性事务属性RequiredRequiredNewMandatoryNotSupportedSupportsNever通过通过javax.ejb.TransactionAttribute annotation来设置来设置事务传播属性总表事务传播属性总表目目 录录JDBC和容器管理的数据源和容器管理的数据源事务和事务和JTA事务隔离和传播属性的设置事务隔离和传播属性的设置EJB的事务管理的事务管理事务超时设置事务超时设置EJBEJB的事务管理的事务管理容器事务管理容器事务管理(CMT)EJB默认默认使用的策略使用的策略对业务方法的编程对业务方法的编程 有限制有
14、限制Bean 事务管理事务管理(BMT)优点:简单、方便优点:简单、方便缺点:不灵活,得自己编写代码实现缺点:不灵活,得自己编写代码实现目目 录录JDBC和容器管理的数据源和容器管理的数据源事务和事务和JTA事务隔离和传播属性的设置事务隔离和传播属性的设置EJB的事务管理的事务管理事务超时设置事务超时设置事务超时设置事务超时设置对于容器托管事务,如果应用事务一直不对于容器托管事务,如果应用事务一直不结束(既不提交,也不回滚),那就会导结束(既不提交,也不回滚),那就会导致相关数据一直处于锁定状态,从而引起致相关数据一直处于锁定状态,从而引起性能下降。性能下降。在在Weblogic中为数据源设置超时时长中为数据源设置超时时长实际操作演示实际操作演示在在JBoss中为数据源设置超时时长中为数据源设置超时时长实际操作演示实际操作演示本章小结本章小结学习了数据源的概念学习了数据源的概念学习了在不同服务器中操作数据库的方法学习了在不同服务器中操作数据库的方法学习了事务的概念,及如何控制事务学习了事务的概念,及如何控制事务