JDO2 API 框架:数据持久化与对象关系映射
JDO2 API 框架:数据持久化与对象关系映射
JDO2(Java Data Objects 2) API 是一个用于数据持久化及对象关系映射的Java框架。它提供了一种方便的方式来将Java对象持久化并存储到关系数据库中。JDO2 API的设计目标是提供一种与数据库无关的持久化解决方案,使开发人员能够以面向对象的方式来操作和管理数据。
在使用JDO2 API进行数据持久化时,首先需要配置相关的环境和依赖项。以下是完整的配置步骤和代码示例。
1. 引入相关依赖项:在项目的构建文件中,添加JDO2 API的依赖项,如下所示(以Maven为例):
<dependency>
<groupId>javax.jdo</groupId>
<artifactId>jdo-api</artifactId>
<version>2.3-eb</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>3.0.0-release</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-api-jdo</artifactId>
<version>3.0.0-release</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-enhancer</artifactId>
<version>3.0.1</version>
</dependency>
2. 配置持久化单元:在项目的配置文件(如persistence.xml)中,定义JDO2的持久化单元,如下所示:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="myPersistenceUnit" transaction-type="RESOURCE_LOCAL">
<class>com.example.MyEntity</class>
<properties>
<property name="javax.jdo.PersistenceManagerFactoryClass"
value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory"/>
<property name="javax.jdo.option.ConnectionURL" value="jdbc:mysql://localhost/mydatabase"/>
<property name="javax.jdo.option.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
<property name="javax.jdo.option.ConnectionUserName" value="myusername"/>
<property name="javax.jdo.option.ConnectionPassword" value="mypassword"/>
<property name="javax.jdo.option.NontransactionalRead" value="true"/>
<property name="javax.jdo.option.NontransactionalWrite" value="true"/>
</properties>
</persistence-unit>
</persistence>
在上述配置中,我们定义了一个名为"myPersistenceUnit"的持久化单元,并指定了相关的数据库连接信息。
3. 编写实体类:创建需要持久化的Java实体类,示例如下:
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
@PersistenceCapable
public class MyEntity {
@PrimaryKey
private long id;
@Persistent
private String name;
// getters and setters
}
上述代码中,我们使用了JDO2 API提供的注解来标记实体类及其属性,以便进行持久化和映射。
4. 编写数据访问代码:通过JDO2 API,我们可以对数据进行增删改查等操作。以下是一个简单的示例:
import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import javax.jdo.Transaction;
import java.util.List;
public class Main {
public static void main(String[] args) {
PersistenceManager pm = PMF.get().getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
tx.begin();
MyEntity entity = new MyEntity();
entity.setId(1);
entity.setName("example");
pm.makePersistent(entity);
Query<MyEntity> query = pm.newQuery(MyEntity.class);
List<MyEntity> entities = query.executeList();
for (MyEntity e : entities) {
System.out.println(e.getId() + ": " + e.getName());
}
tx.commit();
} finally {
if (tx.isActive()) {
tx.rollback();
}
pm.close();
}
}
}
在上述代码中,我们首先获取持久化管理器(PersistenceManager),并开启一个事务(Transaction)。然后,我们创建一个新的实体对象,并使用makePersistent方法将其持久化到数据库中。接着,我们使用Query对象执行查询,并打印结果。最后,我们提交事务或回滚事务,并关闭持久化管理器。
通过以上步骤和代码示例,我们可以使用JDO2 API进行数据持久化和对象关系映射。