昨天还在用Torque,今天听说Hibernate更好,明天说不准又有更好的持久层工具...
如何使应用程序不变化的情况下选择不同的持久层呢?
看看Finetix LLC的资深顾问Charles Chan给我们现身说法。
Charles Chan在文章 Object-Relational Mapping with Apache Jakarta OJB
中介绍了Apache OJB的使用,并在文章附录中提到一种屏蔽不同持久层的设计思路,他采用了工厂方法模式(Factory Method),并通过实例Apache OJB来说明他的设计。
这个设计有两个产品,一个是PersistenceManager,另一个是Transaction 。
OJBPersistenceManager和OJBTransaction 分别是两个产品的实现。
It is often desirable to decouple your application from the specifics of a persistence framework, so that you can easily switch frameworks in the future. I recommend creating custom PersistenceManager and Transaction classes for this purpose. For example:
Example
13
: PersistenceManager and Transaction Interfaces
/** */
/**
* The abstract base class for all PersistenceManager. It provides
* method to persist and object and to obtain the current
* transaction.
*/
public
abstract
class
PersistenceManager
{
public
static
PersistenceManager getInstance()
{
return
new
OJBPersistenceManager();
}
public
abstract
void
makePersistent(Object o)
throws
PersistenceException;
public
abstract
Transaction currentTransaction()
throws
PersistenceException;
}
/** */
/**
* A Transaction interface. It provides minimal support for
* beginning, committing, and rolling back a transaction.
*/
public
interface
Transaction