简介
标签
作者
已辟谣?
Solarmetric的Abe White对我对TSS上JDO的批评进行了回复。我实际上并不想就这个问题展开漫长的辩论,但既然我的第一篇帖子中确实存在错误,我必须承认这一点。
EJB3
昨天,Linda DeMichiel宣布了EJB 3.0即将带来的变化。她的演讲中有许多内容需要消化,我认为人们需要一段时间才能弄清楚新规范的全部影响。到目前为止,大多数注意力都集中在实体bean的重设计中,但这绝对不是全部的新内容!专家小组积极采用了注解,最终消除了部署描述符XML地狱。借鉴Avalon、Pico、Spring、Hivemind等,EJB将使用依赖注入作为JNDI查找的替代方案。会话bean将是POJO,具有业务接口,已经消除了home对象。随着各种其他的变化,这意味着EJB 3.0将是一个更适合在具有servlets和业务逻辑位于同一进程(这对于大多数但并非所有应用程序而言是最合理的部署拓扑)的Web应用程序的解决方案,同时不会失去处理更复杂分布式物理架构的能力。
有状态的会话bean很棒
像许多Java开发者一样,我经常看到有关有状态会话bean的所谓可伸缩性问题,我简单接受了这些问题是真实的,并拒绝考虑使用有状态bean。我认为这是懒惰,但我们没有时间验证我们读到的每一件事——而且我从未有过理由怀疑我所读到的信息是正确的。
Hibernate Three的范围
经过一年多的活动,Hibernate2分支的开发终于告一段落;Hibernate 2.1.3将是最后一个发布版本,它代表了具有典型Java应用程序所需所有功能的坚实基础POJO持久化解决方案。Hibernate 2.1的任何未来版本都仅包含错误修复。我们一直称之为2.2的分支实际上将发布为版本3。
SQL调优
如果你曾经与关系型数据库工作过,你应该出去买O'Reilly的《/SQL Tuning/》,作者是Dan Tow。这本书全部是关于如何将SQL查询以图形形式表示出来,然后,利用一些简单的经验法则,确定查询的最佳执行计划。一旦找到了最佳执行计划,你就可以添加索引、查询提示或使用其他技巧来让数据库使用这个执行计划。非常棒的内容。甚至对于那些对我们(尤其是我)来说,关于全表扫描、索引扫描、嵌套循环连接、散列连接等实际技术细节了解不足的人来说,这本书也提供了足够的入门材料,使他们能够开始自信地阅读和理解执行计划。与大多数数据库书籍不同,这本书并不是非常特定于某个平台,尽管它经常具体提到Oracle、DB2和SQL Server。
终结者甚至比你想象的更邪恶
Developerworks推荐了我所读过的关于Java性能的最好文章。作者通过解释Sun JVM中代际垃圾回收的工作原理(顺便说一句,这比典型的解释更详细),驳斥了在Java中创建临时对象是昂贵的这一说法。我已经知道这一点;Hibernate从一开始就拒绝了对对象池的概念(不幸的是,EJB规范尚未跟上)。
与猪摔跤
我至少每周要对自己重复这个陈词滥调一次
如果你遇到问题...
我在一家大型零售商那里完成了一项咨询工作,我们通过一些相当简单的变化,使Hibernate应用程序的性能提高了大约两个数量级。这真的让我深刻认识到,我几乎见过的所有性能问题都可以通过以下一种或两种方式来解决
不要锁定在中间层!
我们使用关系型数据库技术的一个原因在于,现有的关系型数据库管理系统(RDBMS)实现提供了极为成熟、可扩展和稳健的并发控制。这不仅仅是简单的读写锁。例如,使用锁的数据库被设计为在特定事务获取/多个/锁时能够高效扩展——这被称为/锁升级/。另一方面,一些数据库(例如,Oracle和PostgreSQL)根本不使用锁——相反,它们使用多版本并发模型。这种复杂的并发处理方法旨在实现比传统锁定模型更高的可扩展性。数据库甚至允许您指定所需的交易隔离级别,让您可以在隔离性和可扩展性之间进行权衡。