persistence java_Java数据持久层 - Persistence Manager Factory

昨天还在用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:

4f1150b881333f12a311ae9ef34da474.png

Example

13

: PersistenceManager and Transaction Interfaces

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif

/** */

/**

d18c02628675d0a2c816449d98bda930.png* The abstract base class for all PersistenceManager. It provides

d18c02628675d0a2c816449d98bda930.png* method to persist and object and to obtain the current

d18c02628675d0a2c816449d98bda930.png* transaction.

8f1ba5b45633e9678d1db480c16cae3f.png

*/

4f1150b881333f12a311ae9ef34da474.png

public

abstract

class

PersistenceManager

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif

9b8a8a44dd1c74ae49c20a7cd451974e.png

{

d18c02628675d0a2c816449d98bda930.png

public

static

PersistenceManager getInstance()

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif

9b8a8a44dd1c74ae49c20a7cd451974e.png

{

d18c02628675d0a2c816449d98bda930.png

return

new

OJBPersistenceManager();

ecedf933ec37d714bd4c2545da43add2.png}

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png

public

abstract

void

makePersistent(Object o)

d18c02628675d0a2c816449d98bda930.png

throws

PersistenceException;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png

public

abstract

Transaction currentTransaction()

d18c02628675d0a2c816449d98bda930.png

throws

PersistenceException;

d18c02628675d0a2c816449d98bda930.png

8f1ba5b45633e9678d1db480c16cae3f.png}

4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.png

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif

/** */

/**

d18c02628675d0a2c816449d98bda930.png* A Transaction interface. It provides minimal support for

d18c02628675d0a2c816449d98bda930.png* beginning, committing, and rolling back a transaction.

8f1ba5b45633e9678d1db480c16cae3f.png

*/

4f1150b881333f12a311ae9ef34da474.png

public

interface

Transaction

1fa987a29c6482f53d401256f96355eb.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值