分享
 
 
 

Java数据对象(JDO)介绍(二)

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

javax.jdo.PersistenceManagerFactory

PersistenceManagerFactory接口 被用来获得一个PersistenceManager 实例。这个接口中定义两个工厂方法(有关工厂方法的内容可以参考Java设计模式)。

public PersistenceManager getPersistenceManager()

public PersistenceManager getPersistenceManager(String userid,

String password)

Because PersistenceManagerFactory is an interface, some vendor specific class, which implements this interface, must be used as a bootstrap mechanism. This should turn out to be the only vendor specific code that a JDO application uses. Because of this, the JDO specification suggests that an application level factory class be implemented which returns the appropriate instance of the PersistenceManagerFactory so that implementations may be swapped out with minimal impact on application code. Only the application's factory would need to be modified in this case.

因为PersistenceManagerFactory 是一个接口,一些实现该接口的厂商特定的类必须通过一种“自举”机制来使用。

// SolarMetric's 实现PersistenceManagerFactory 接口的例子...

PersistenceManagerFactory managerFactory =

new com.solarmetric.kodo.impl.jdbc.JDBCPersistenceManagerFactory();

// 获得一个控制器 manager...

PersistenceManager manager = managerFactory.getPersistenceManager();

javax.jdo.PersistenceManager

The PersistenceManager interface is the primary point of contact between a Java application and the JDO implementation. Application code uses a PersistenceManager to retrieve Java objects from the data store and to add Java objects to the data store. The PersistenceManager interface also serves as a factory for several other JDO components discussed below.

PersistenceManager 接口是连接Java应用程序和JDO实现的要点。应用程序使用PersistenceManager 从数据存储中获得对象或者把一个Java对象放到数据存储中。PersistenceManager 接口也为下面将要讨论的几个JDO组件提供服务。

PersistenceManager 接口中定义了几个方法来把JDO实例对象添加到数据存储中。

public abstract void makePersistent(Object);

public abstract void makePersistentAll(Object[]);

public abstract void makePersistentAll(java.util.Collection);

通过下面几个方法实现把JDO实例对象添加到数据存储中的过程:

// 获得一个 manager...

PersistenceManager manager = managerFactory.getPersistenceManager();

// 下面的 Employee 必须扩展了 PersistenceCapable...

Employee newEmployee = new Employee(...);

manager.makePersistent(newEmployee);

javax.jdo.Extent

Extent (范围)对象表示所有的在当前数据库中实际的类对象。在PersistenceManager 中的一个工厂方法负责获得一个Extent (范围)对象。

public Extent getExtent(Class persistenceCapableClass, boolean subclasses)

Class参数标明了接收的对象类型。boolean 参数标明是否包含第一个参数指定的类的子类。

Extent 接口定义了一个iterator()方法,它返回一个 java.util.Iterator来遍历所有由Extent 描述的实例。

//获得一个 manager...

PersistenceManager manager = managerFactory.getPersistenceManager();

// the Employee class must implement PersistenceCapable...

Extent employeesExtent = manager.getExtent(Employee.class, false);

java.util.Iterator iterator = employeesExtent.iterator();

javax.jdo.Query

Query 接口允许从数据存储中获得符合某些条件的实例。Query 实例可以重载自PersistenceManager 接口中的newQuery()方法获得。

Query 接口定义了几个不同版本的重载execute() 的方法,这些方法将执行查询(Query) 并返回匹配的结果。

// 获得一个 manager...

PersistenceManager manager = managerFactory.getPersistenceManager();

// Employee 类必须实现 PersistenceCapable接口...

Extent employeesExtent = manager.getExtent(Employee.class, false);

// 一个Query 获得所有在公司工作五年以上的 Employees....

Query query = manager.newQuery(Employee.class, employeesExtent,

"yearsOfEmployement 5");

// 执行查询Query...

Collection employees = (Collection) query.execute();

// 处理结果...

Iterator iterator = employees.iterator();

while (iterator.hasNext())

{

Employee employee = (Employee) iterator.next();

(...)

}

注意newQuery()方法的第三个参数"yearsOfEmployement 5"。它标明了返回结果的条件。上面的实现要求Employee 类中必须有一个属性字段叫yearsOfEmployment 。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有