`
simen_net
  • 浏览: 306279 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

跟我学OpenJPA之二(Hello OpenJPA)

 
阅读更多

接上节:跟我学OpenJPA之一(工欲善其事,必先利其器)

 

Hello World、Hello Delphi、Hello ASP、Hello Java、Hello SSH,这些都是我经历过的Hello,今天我们大家陪我再一次经历Hello OpenJPA。。。。

 

一、新建一个普通的Java项目(不是WTP项目)


 

二、转换为Maven项目

 

增加一些库依赖,pom.xml代码如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>StrongOpenJPA</groupId>
  <artifactId>StrongOpenJPA</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.6.4</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.6.4</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>3.1.1.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>3.1.1.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>3.1.1.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.apache.openjpa</groupId>
      <artifactId>openjpa</artifactId>
      <version>2.1.1</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

因为pom.xml中没有配置src的未知,所以默认转换为maven项目之后,build path中的source中会变为空,这个时候要吧src重新增加进去,最简单的方法就是直接加!


 

三、增加slf4j记录日志

在src中新建一个log4j.properties文件,修改内容如下:

# This is the configuring for logging displayed in the Application Server
log4j.rootCategory=INFO, stdout

#stdout configure
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-d{HH:mm:ss}-%p]%m%n

 

四、转换为JPA项目

Eclipse中自带了转换的工具,但是那个不能直接支持OpenJPA,所以咱还是自立更生吧

在src中新建META-INF目录,在META-INF中新建persistence.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" 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_1_0.xsd">
  <persistence-unit name="StrongOpenJPAPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <properties>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/strongjpa" />
      <property name="javax.persistence.jdbc.user" value="root" />
      <property name="javax.persistence.jdbc.password" value="root" />

      <!-- 日志的级别 -->
      <property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=WARN, Tool=INFO, SQL=TRACE" />

      <property name="openjpa.RemoteCommitProvider" value="sjvm" />
      <!-- 启用缓存,并且设置缓存的容量为5000,并且禁用软引用容量 -->
      <property name="openjpa.DataCache" value="true(CacheSize=5000, SoftReferenceSize=100)" />
      <!-- 启用查询结果缓存,缓存的容量为1000,并且软引用的容量为100 -->
      <property name="openjpa.QueryCache" value="true(CacheSize=5000, SoftReferenceSize=100)" />
      <!-- 缓存的数据存储类型 -->
      <property name="openjpa.QueryCompilationCache" value="true" />
      <!-- 数据库连接工厂时的属性 QueryTimeout:JDBC驱动执行查询超时的时间,以秒为单位。 PrettyPrint:是否格式化输出SQL语句。 PrettyPrintLineLength:SQL每行输出的最大长度。 -->
      <property name="openjpa.ConnectionFactoryProperties" value="PrettyPrint=true, PrettyPrintLineLength=100" />
      <!-- 查询结果一次转化为对象的最多个数,相当于JDBC的结果集对象Statement.set FetchSize。默认为-1,表示所有的查询对象立即初始化;0表示使用JDBC驱动默认的数值 -->
      <property name="openjpa.FetchBatchSize" value="-1" />
    </properties>
  </persistence-unit>
</persistence>

这些配置的参数在OpenJPA的文档中都有,因为没有找到中文的文档,大家有需要的话直接去看官方文档吧。其中有一个地方需要解释的,javax.persistence.jdbc.driver等等这些参数是JPA标准,OpenJPA中也有类似的参数,一般情况下建议大家还是直接使用标准参数来配置

 

五、配置Spring

在src下新建applicationContext.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd 
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

  <!-- 注解扫描 -->
  <context:component-scan base-package="com.strong" />

  <!--整合Spring和JPA -->
  <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="StrongOpenJPAPU" />
    <property name="loadTimeWeaver">
      <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
    </property>
  </bean>


  <!--注入事务管理类 -->
  <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
  </bean>

  <!--允许使用注解方式配置事务 -->
  <tx:annotation-driven transaction-manager="transactionManager" />
</beans>

 

六、建立Junit测试单元

新建一个类:test.com.strong.StringOpenJPATest

package test.com.strong;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext.xml" })
public class StringOpenJPATest {

  @PersistenceContext
  private EntityManager entityManager;

  @Test
  public void doTest() {
    System.out.println("=====Hello OpenJPA " + entityManager + "=======");
  }

}

 

执行测试获得结果如下:

......
=====Hello OpenJPA Shared EntityManager proxy for target factory [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean@6087e704]=======
.......

到这里,我们成功的运行起来Spring+OpenJPA,并获取了对应的EntityManager,下一步将在这个的基础之上其他的操作,因为我是按照最初始的步骤进行的,所以现在的配置文件正式运行可能定存在问题,下节将进行详细的介绍

 

 

本节资源下载

 

SQL文件:strongjpa.sql.tar.gz

项目文件:StrongOpenJPA.tar.gz

 

  • 大小: 57.5 KB
  • 大小: 97.3 KB
  • 大小: 60.1 KB
分享到:
评论

相关推荐

    openjpa 写的一个例子

    OpenJPA,全称Open Java Persistence API,是Java平台上的一个开源对象关系映射(ORM)框架,它实现了Java Persistence API(JPA),用于管理Java应用程序中的持久化数据。在这个"openjpademo"示例中,我们将会探讨...

    jsf、openJpa学习

    **OpenJPA**(Open Java Persistence API)是Apache软件基金会的一个开源项目,它是Java持久层规范JPA(Java Persistence API)的实现,用于处理对象关系映射(ORM)。OpenJPA提供了一个框架,使得Java对象可以直接...

    openjpa 源码 下载 帮助开发人员调试

    OpenJPA,全称Open Java Persistence API,是Apache软件基金会的一个开源项目,它实现了Java持久化API(Java Persistence API,JPA),为Java开发者提供了一种标准的方式来管理和持久化应用程序中的对象。...

    openjpa范例及实例工程

    默认情况下,当应用程序第一次获取实体标识时,OpenJPA 框架从数据库中一次性获取 50 个连续的实体标识缓存起来,当下一次应用程序需要获取实体标识时,OpenJPA 将首先检测缓存中是否存在实体标识,如果存在,Open...

    OpenJPA 2.2.1 API (CHM格式)

    OpenJPA  OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写...

    Spring和openJPA集成

    **二、OpenJPA** OpenJPA是基于JPA规范的ORM工具,它是Apache软件基金会的一个项目。JPA为Java应用程序提供了一种标准的方式来处理持久化数据,将复杂的数据库操作转化为对Java对象的操作,降低了数据库访问的复杂...

    Spring中使用OpenJPA

    在Java世界里,Spring框架是应用最广泛的轻量级框架之一,它提供了强大的依赖注入、AOP(面向切面编程)以及数据访问等能力。OpenJPA(Java Persistence API)则是Java平台上的一个ORM(对象关系映射)工具,它实现...

    Open JPA2 employee 简单例子

    OpenJPA2是一个开源的对象关系映射(ORM)框架,它是Java Persistence API(JPA)规范的实现。在这个“Open JPA2 employee简单例子”中,我们将深入理解如何使用OpenJPA2来处理数据库中的员工数据。这个示例将帮助...

    openJpa的应用,感觉还可以

    OpenJPA(Open Java Persistence API)是Apache软件基金会下的一个开源项目,它是Java持久层标准JPA(Java Persistence API)的一个实现。JPA是Java EE平台中的一个重要组件,用于管理和处理应用程序中的对象-关系...

    openJPA官方手册

    - **缓存管理**:介绍OpenJPA中的缓存机制,包括一级缓存和二级缓存。 - **查询工厂**:如何创建和执行JPQL查询。 #### 九、事务(Transaction) - **事务类型**:解释不同类型的事务(本地事务、全局事务等)及其...

    openjpa jar

    OpenJPA,全称为Open Java Persistence API,是Apache软件基金会下的一个开源项目,主要目标是实现Java持久化规范,即JPA(Java Persistence API)。JPA是Java EE平台中的一个核心组件,它提供了一种标准的方式来...

    OpenJPA API 文档 chm格式

    OpenJPA API 文档 chm格式

    通过 WebSphere Application Server V6.1 利用 OpenJPA

    安装OpenJPA的步骤通常包括下载OpenJPA的jar文件,将其添加到服务器的类路径中,并在服务器配置中指定OpenJPA作为默认的持久化提供者。 接下来,我们需要创建一个JPA项目。这涉及定义实体类,这些类代表数据库中的...

    Spring MVC+OpenJPA框架

    Spring MVC和OpenJPA是Java开发中常用的两个框架,它们分别在Web应用和持久层处理上发挥着重要作用。Spring MVC是Spring框架的一部分,用于构建高效、灵活的Web应用程序,而OpenJPA则是一个实现了Java Persistence ...

    Apache OpenJPA 2.1 User's Guide

    ### Apache OpenJPA 2.1 用户指南:Java Persistence API 的深入解析 #### 一、简介 Apache OpenJPA 2.1 是基于 Sun Microsystems 的 Java Persistence 2.0 API (JSR-317 JPA 2.0) 规范实现的一种透明持久化 Java ...

    openjpa-manual

    ### OpenJPA-Manual 关键知识点解析 #### 一、OpenJPA介绍 **1.1 关于本文档** 本文档旨在提供一个全面且深入的指南,帮助开发人员理解和掌握Java Persistence API(JPA)的核心概念及其在Apache OpenJPA中的实现...

    openjpa:Apache OpenJPA

    Apache OpenJPA-自述文件 前言 感谢您下载此版本的Apache OpenJPA。 Apache OpenJPA是Java Persistence API规范的实现。 执照 此存储库的内容已根据Apache License 2.0 许可 更多信息 可以在openjpa-project子目录...

    Openjpa2.2+Mysql+Maven+Servlet+JSP source code

    Openjpa2.2+Mysql+Maven+Servlet+JSP 博客源码: http://blog.csdn.net/shenhonglei1234/article/details/10394379

    apache-openjpa-2.2.1-source

    OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写业务逻辑上。...

Global site tag (gtag.js) - Google Analytics