spring 与 事物管理

offer 79

看着spring in action 以往的 struts 2 in action 也是很精彩,hibernate in action 的书籍也找到了不少,查找了很多关于 in action 系列图书的资料

webWork, struts 2 实在 webWork 和struts 1 之上的一个框架,ValueStack 和 OGNL 以及 Interceptor 都来源于 webWork

1. iBATIS : 什么是 iBATS  个人理解是 , hibernate是1 orm ,iBATIS是面向SQL,所以灵活性比hiberante高,不使用hql

   iBATIS 技术出现的原因: JDBC的prepareStatement编写太冗长,SQL语句和程序逻辑高度耦合,Java的面向对象和 SQL的面向数据表冲突。

   iBATIS 是什么: 面向SQL ,通过两个xml文件描述了 实体类和数据库表之间的影射,在XML中使用SQL在控制查询。

  iBATIS 的使用场景:iBATIS最好是用在你需要全面地控制SQL的时候,在需要对SQL查询做微调的时候也很有用。当你在应用和数据库设计两方面都有完全的控制权的时候,就不应该使用iBATIS,因为在这样的情况下,应用可能会做出修改以适应数据库,或是反过来。在这种情形中,你可以构建一个完全的对象-关系应用,其他的ORM工具更适于使用,因为iBATIS较为以SQL为中心,其通常被称作反转的——功能齐全的ORM工具生成SQL,而iBATIS直接使用SQLiBATIS也不适合于非关系型的数据库,因为这类数据库不支持事务和其他iBATIS用到的键特性。这段话说得贼有水平

  iBATIS 的使用实例:


2. Hibernate  :

    Reason : 使用了Hibernate后,你就无需担心数据库的改变,因为手工修改SQL脚本文件的工作已被免除。Hibernate使得对象-关系映射变得简单起来,它的方法是在一个XML文件中映射元数据,该文件定义了需要映射到某个特定类上的数据库中的表。Hibernate在映射这一块上做得很好,就是说实体类上的属性与 数据表可以不一致,只要映射正确就行了。

    What :  Hibernate的主要编程接口有4个,SessionFactorySessionTransactionQuery。通过配置文件工作。hibernate实例的三种状态:transientpersistentdetached

    Where :  Hibernate最适合用来作为端到端的OR映射的手段。其提供了一个完整的ORM解决方案,但但是不会让你控制查询。对于那些对应用和数据库两者都有完全的控制权的情况来说,Hibernate是一种理想的解决方案。在这类情况中,你可以修改应用来适用数据库,反之亦然,在这些情况下你可以使用Hibernate来构建一个全对象-关系应用。对于不太熟悉SQL的面向对象编程者来说,Hibernate是最佳选择。说得非常清晰,在大公司的合作中,使用iBATIS而不是hibernate的原因是什么?编程部门可能没有对数据库的完整控制权,通过iBATIS的SQL微调来控制。

    Example :


3. Java Persistence API   符合Java EE 5规范的一门技术,与Hibernate能很好集成使用

    Reason :

    What :

    Where :

    Example:

    question :  POJO 和 JavaBean的区别


4.    三种持久化技术的比较

   完整的ORM解决方案: HibernateJPA一类的传统的ORM解决方案应该用来作为一种完全的对象-关系映射手段。HibernateJPA直接把Java对象映射到数据库表上,而iBATIS则是把Java对象映射到SQL查询的结果上。在某些应用中,领域模型中的对象是根据业务逻辑来设计的,可能不完全与数据模型匹配,在这种情况下,iBATIS是合适的选择

   对SQL的依赖: 使用存储过程,可以选择iBATIS, 希望减少SQL的依赖,可以使用hibernate来生成高效率的SQL查询语句

  

5. 结论:

    原文结论:

iBATISHibernateJPA是用于把数据持久到关系数据库中的三种不同的机制,每种都有着自己的优势和局限性。iBATIS不提供完整的ORM解决方案,也不提供任何的对象和关系模型的直接映射。不过,iBATIS给你提供了对查询的全面控制权。Hibernate提供了一个完整的ORM解决方案,但不提供对查询的控制权。Hibernate非常的受欢迎,有一个庞大而活跃的社区为新用户提供支持。JPA也提供一个完整的ORM解决方案,并提供对诸如继承和多态一类的面向对象编程特性的支持,不过它的性能则取决于持久性提供程序。

某个特定持久性机制的选择事关所有功能特性的权衡,这些特性在本文的比较章节中都做了讨论。对于大部分的开发者来说,需要根据是否要求对应用的SQL做全面控制、是否需要自动生成SQL,或仅是想要一个易于编程的完整的ORM解决方案等各方面的考虑来做决定。

     写这篇文章的肯定是一位高人,说得清晰,考虑问题详细周到。


 来自 : iBATIS , Hibernate , JPA 哪一款更适合你


回答上面一个问题 : POJO 和 JavaBean的简单区别


个人总结:

  1 POJO : 符合Java语言规范,有一部分的 getter和 setter的类

2 JavaBean :   符合三点的POJO ,

                 (1)具有无参构造函数

                  (2) 可序列化

                     (3 ) 这个类的属性使用 getter 和 setter来访问,其他方法遵从标准 命名规范。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章