pmf = null;
private PersistenceManager pm = null;
private Transaction transaction = null;
// 需要保持的人的数组
private Person people;
// 现有对象标识符的向量
private Vector id = new Vector(SIZE);
public PersonPersist() {
try {
Properties props = new Properties();
props.setProperty("javax.jdo.PersistenceManagerFactoryClass",
"com.prismt.j2ee.jdo.PersistenceManagerFactoryImpl");
pmf = JDOHelper.getPersistenceManagerFactory(props);
pmf.setConnectionFactory( createConnectionFactory() );
} catch(Exception ex) {
ex.printStackTrace();
System.exit(1);
}
}
连接代理是在名字为createConnectionFactory()的静态方法中创建的,该代理需要JDBC URL、JDBC驱动
程序、用户名和口令。
public static Object createConnectionFactory() {
ManagedConnectionFactoryImpl mcfi = new
ManagedConnectionFactoryImpl();
Object connectionFactory = null;
try {
mcfi.setUserName("scott");
mcfi.setPassword("tiger");
mcfi.setConnectionURL(
"jdbc:oracle:thin:@localhost:1521:thedb");
mcfi.setDBDriver("oracle.jdbc.driver.OracleDriver");
connectionFactory = mcfi.createConnectionFactory();
} catch(Exception e) {
e.printStackTrace();
System.exit(1);
}
return connectionFactory;
}
第二步:在数据库中输入三个人的
资料 PersistPeople()使用Person.java文件中的构造器创建了3个人的
资料。。我们要作的第一件事是通过
getPersistenceManager()获得一个可保持性管理器,然后创建一个执行我们的任务的事务。为了保持这一对象结构图,我们简单地调用makePersistentAll( Object )方法即可。代码底部的for()循环获得每个保持对象的唯一的ID,并保存起来供以后使用。
public void persistPeople() {
// 创建人的
资料的数组
people = new Person[SIZE];
// 创建3个人的
资料 people[0] = new Person("Gary Segal", "123 Foobar Lane",
"123-123-1234", "gary@segal.com",
"(608) 294-0192", "(608) 029-4059");
people = new Person("Michael Owen",
"222 Bazza Lane, Liverpool, MN",
"111-222-3333", "michael@owen.com",
"(720) 111-2222", "(303) 222-3333");
people = new Person("Roy Keane",
"222 Trafford Ave, Manchester, MN",
"234-235-3830", "roy@keane.com",
"(720) 940-9049", "(303) 309-7599)");
// 保持这3个人的
资料 pm = pmf.getPersistenceManager();
transaction = pm.currentTransaction();
pm.makePersistentAll(people);
transaction.commit();
// 获取被保持对象的对象ID
for(int i = 0; i < people.length; i++) {
id.add(pm.getObjectId(people[i]));
}
// 关闭现有的保持性管理器,保证对象是从数据库而不是从保持性管理器的缓存中读取的
pm.close();
}
下面是一些可以针对保持性管理器的其他方法:
使实例成为可保持的:获得一个临时对象,并保持它。
删除可保持实例:从数据存储库中删除信息。
使实例临时化:使实例与可保持性管理器分离,而不删除在数据存储库中的信息。
使实例处于保持状态 删除保持的实例 使实例处于临时状态
makePersistent(Object o) deletePersistent(Object o) makeTransient(Object o)
makePersistentAll(Object os) deletePersistentAll(Object os) makeTransientAll(O