`
simen_net
  • 浏览: 300940 次
  • 性别: 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
分享到:
评论

相关推荐

    Apache OpenJPA 2.1 User's Guide

    OpenJPA is Apache's implementation of Sun's Java Persistence 2.0 API (JSR-317 JPA 2.0) specification for the transparent persistence of Java objects. This document provides an overview of the JPA ...

    openJPA官方手册

    openJPA官方手册,openJPA官方手册openJPA官方手册

    openjpa范例及实例工程

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

    OpenJPA 2.2.1 API (CHM格式)

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

    jsf、openJpa学习

    jsf 入门知识 ,jsf标签,jsf与openJpa整合,jsf与Spring整合

    OpenJPA API 文档 chm格式

    OpenJPA API 文档 chm格式

    Open JPA2 employee 简单例子

    Open JPA2 employee 简单例子

    openjpa 写的一个例子

    自己用openjpa些的一个基于web 的例子

    openjpa-manual

    JPA Overview and OpenJPA Reference Guide

    Spring中使用OpenJPA

    Spring中使用OpenJPA源代码 博文链接:https://lxy19791111.iteye.com/blog/184997

    Openjpa手册

    OpenJPA OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。

    Spring MVC+OpenJPA框架

    Spring MVC+OpenJPA框架,只是个框架哦

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

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

    openjpa:Apache OpenJPA

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

    apache-openjpa-2.2.1-source

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

    apache-openjpa-3.1.0-binary.zip

    JPA规范要求对实体对象...OpenJPA支持两种增强 方法,但强烈建议使用字节码编织增强。以下“ 实体增强” 页面包括有关两种增强类型的更多详细信息,以及有关如何在ANT,Maven和Eclipse环境中设置构建时间增强的示例。

    openjpa jar

    openjpa相关jar包,开发必备,希望对各位有帮助

    JPA教程,包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注

    包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注

    openjpa实体标识的生成策略

    本文是 使用 Apache OpenJPA 开发 EJB 3.0 应用系列 的第五部分,介绍在 OpenJPA 中如何自动生成实体的唯一标识,包括使用容器自动生成实体标识,借助于数据库的自动编号、序列号、数据库表等技术自动生成实体标识等...

    Spring和openJPA集成

    NULL 博文链接:https://laoli5290.iteye.com/blog/2088341

Global site tag (gtag.js) - Google Analytics