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直接使用SQL。iBATIS也不适合于非关系型的数据库,因为这类数据库不支持事务和其他iBATIS用到的键特性。这段话说得贼有水平
iBATIS 的使用实例:
2. Hibernate :
Reason : 使用了Hibernate后,你就无需担心数据库的改变,因为手工修改SQL脚本文件的工作已被免除。Hibernate使得对象-关系映射变得简单起来,它的方法是在一个XML文件中映射元数据,该文件定义了需要映射到某个特定类上的数据库中的表。Hibernate在映射这一块上做得很好,就是说实体类上的属性与
数据表可以不一致,只要映射正确就行了。
What : Hibernate的主要编程接口有4个,SessionFactory,Session,Transaction,Query。通过配置文件工作。hibernate实例的三种状态:transient,persistent,detached。
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解决方案: 像Hibernate和JPA一类的传统的ORM解决方案应该用来作为一种完全的对象-关系映射手段。Hibernate和JPA直接把Java对象映射到数据库表上,而iBATIS则是把Java对象映射到SQL查询的结果上。在某些应用中,领域模型中的对象是根据业务逻辑来设计的,可能不完全与数据模型匹配,在这种情况下,iBATIS是合适的选择。
对SQL的依赖: 使用存储过程,可以选择iBATIS, 希望减少SQL的依赖,可以使用hibernate来生成高效率的SQL查询语句
5. 结论:
原文结论:
iBATIS、Hibernate和JPA是用于把数据持久到关系数据库中的三种不同的机制,每种都有着自己的优势和局限性。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来访问,其他方法遵从标准 命名规范。