- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实现方式 Spring支持用两种方式配置声明式事务: 1)XML配置 2)Anntation注解 都是实现同一个目标的不同方式,以下介绍XML的配置方式。 代码演示 BasicDataSource LocalSessionFactoryBean HibernateTransactionManager tx:advice aop:config BasicDataSource commons-dbcp是 下的开源数据库连接池jar包。 提供了一个轻量级、简单高效、多功能的一站式实现。 可以满足基本的需求,节省开发者自行开发连接池的时间。 驱动类名 url 用户名 密码 创建一个BasicDataSource实例,必须设置以下属性: 该jar包运行期间需要依赖commons-pool.jar包 FactoryBean FactoryBean对于Spring来说具有重要的地位,用户可以通过实现该工厂接口定制实例化Bean的逻辑。 FactoryBean API FactoryBean接口定义了三个方法: 返回由FactoryBean创建的Bean的实例,如果isSingleton()方法返回true,是单例的实例,该实例将放入Spring的缓冲池中 确定由FactoryBean创建的Bean的作用域是singleton还是prototype 返回FactoryBean创建的Bean的类型 FactoryBean 示例 - 1 Car Bean 实现getObject方法, 返回Car实例。 定义Car的实例为单例 FactoryBean 示例 - 2 将CarFactoryBean配置在XML中 单元测试: 运行结果 CarFactoryBean产生了Car的实例,且Car的实例是单例模式。 LocalSessionFactoryBean Spring容器框架,提供了对主流开发框架的整合支持。 其中,spring-orm.jar包是负责对ORM框架的支持,比如:Hibernate。 是由 org.springframework.orm.hibernate4.LocalSessionFactoryBean来完成,见下图: Spring container Hibernate ORM LocalSessionFactoryBean (Spring) (相当于Hollywood演员) (相当于Hollywood的演艺公司高层) (相当于Hollywood的演艺公司) 结论:Spring 整合了 Hibernate! LocalSessionFactoryBean 实现了 FactoryBean 接口 数据源属性 各种属性 实体类所在的包路径 产生SessionFactory实例 本质:将Hibernate中的SessionFactory对象,以Spring的规范进行实例化! 依赖树 Tx切面 TxAdvice PointCut TM Session Factory DataSource Service Dao bean bean bean bean bean 此依赖树必须深刻记忆,能空手写出为止。 xml xml xml tx:method/ 属性 是否必须 默认值 说明 name Yes ? 定义方法名,可以使用*通配符。 比如: ‘get*’, ‘handle*’, ‘on*Event’等。 propagation No REQUIRED 定义传播行为 isolation No DEFAULT 定义隔离级别 timeout No -1 定义超时的值(单位:秒),超时事务自动回滚。 read-only No false 是否只读事务,把查询的操作定义成只读事务,可以减少开销,优化性能。 rollback-for No ? 定义会触发事务回滚的异常类型,用逗号分隔。 比如: com.foo.MyBusinessException,ServletException no-rollback-for No ? 定义不会触发事务回滚的异常类型,用逗号分隔。 getCurrentSession() openSession()和getCurrentSession()区别: 1)前者适用于编程式事务,后者适用于声明式事务; 2) 前者每次调用,都返回一个新的session; 后者调用,仅返回一个和当前线程捆绑的session;如果当前线程没有session,则新建一个session和当前线程捆绑,然后再返回. 3)前者必须手动的调用close()方法,才能释放; 后者在事务提交时,会自动释放. ThreadLocal Java可以为每个线程设置一个专用变量, java.lang.Thread
原创力文档


文档评论(0)