最近在研究一个关于在不用j2ee容器的远程传递对象到服务器再进行持久化方案,做了一个demo。整个demo基于远程的调用,服务器端使用tomcat,spring整合openjpa2.0(用jpa非xml的实体描述方式进行编程后期更容易维护,推荐)。
客户端是一个简洁的java项目,使用spring的httpinvoker调用服务器中的dao层
实体Employee
@Entity
public class Employee implements Serializable {
private static final long serialVersionUID = 2625622501589847344L;
private Integer empid; //主键
private String username;//用户名
private String password;//密码
getter and setter..... and many persistence annotations....
}
实体Employee对应的Manager接口
public interface EmployeeManager {
public void save(Employee employee);
}
实体Manager接口的实现类
public class EmployeeManagerImpl implements EmployeeManager {
/**
* 保存实体
* @param entity
*/
public void save(Employee employee) {
em.persist(employee);
}
}
服务器端的文件配置EntityMangerFactory的管理和事务管理
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="hotel"/>
</bean>
<!-- 配置使用JPA事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
persistence.xml配置
<persistence-unit name="hotel" transaction-type="RESOURCE_LOCAL">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class>com.realhotel.core.Employee</class>
<properties>
<property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/openjpa?useUnicode=true&characterEncoding=UTF-8"/>
<property name="openjpa.ConnectionDriverName" value="org.gjt.mm.mysql.Driver"/>
<property name="openjpa.ConnectionUserName" value="root"/>
<property name="openjpa.ConnectionPassword" value="nui"/>
<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO,SQL=TRACE"/>
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(SchemaAction='add')"/>
</properties>
</persistence-unit>
---------------------------------------------------------------服务器端与客户端的分割线--------------------------
客户端调用服务器端的路径配置
<bean id="employeeServiceProxy" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl" value="http://localhost:8080/wepapp/employee.service"/>
<property name="serviceInterface" value="com.realhotel.manager.EmployeeManager"/>
</bean>
经过测试,在服务器端同一个项目中spring可以正常的创建,管理EntityManager,通过dao层也可以正常的CRUD。
通过客户端的调用也是可以传递对象,服务器端可以正常的接受对象,但是服务器端不能创建EntityManager,报空指针错...
对于以上的远程调用,容器环境和持久化的模型,我认为可能原因有:
1、jpa可能受容器的影响,本例使用的是tomcat一个非j2ee应用服务器
2、文件的配置有错误...
3、spring的容器环境有问题,可能需要改写某些类或者是某些jpa的支持机制才能运行(有人使用Hibernate做持久层已经成功)...
分享到:
相关推荐
Spring Data JPA中文文档1.4.3
Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。
spring注解完整版+spring data jpa官方文档中文翻译+JPA2.0官方文档 文档内容齐全 值得参考学习
内容包括整体认识JPA、JPA基础查询方法、定义查询方法、注解式查询方法、@Entity实例里面常用注解详解、JpaRepository扩展详解、JPA的MVC扩展REST支持、DataSource的配置、乐观锁、SpEL表达式在SpringData里面的应用...
具有详细的SpringDataJPA配置及文档说明,让你更快的理解SpringDataJPA持久层方案
Spring Data JPA中文文档[1.4.3].zip
Spring Data JPA是Spring基于Hibernate开发的一个JPA框架。如果用过Hibernate或者MyBatis的话,就会知道对象关系映射(ORM...但是Spring Data JPA框架功能更进一步,为我们做了 一个数据持久层框架几乎能做的任何事情。
Spring Data JPA中文文档[1.4.3] Spring Data JPA中文文档[1.4.3]
声明:该应用仅仅是技术研究:Spring Data JPA的配置和常见api的使用&maven构建项目,其他技术不在此研究 内涵sql和各种Spring Data JPA测试和案例,导入&创建DB,配置好maven便可运行 maven构建项目&问题:...
spring data jpa最新版本1.8.0,包含了spring-data-jpa-1.8.0.RELEASE.jar,spring-data-jpa-1.8.0.RELEASE-javadoc.jar以及 spring-data-jpa-1.8.0.RELEASE-sources.jar文档和源代码
Java web service 入门示例,使用 JAX_WS API 开发,使用 CXF 发布,集成 Spring ,Spring orm 基于 JPA 开发 DAO, 并使用 Spring data jpa 简化 DAO 实现。
赠送jar包:spring-data-jpa-2.0.9.RELEASE.jar; 赠送原API文档:spring-data-jpa-2.0.9.RELEASE-javadoc.jar; 赠送源代码:spring-data-jpa-2.0.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-data-jpa...
Spring Data JPA Demo
spring data jpa17中文开发文档
第一章:Spring Data JPA入门 包括:是什么、能干什么、有什么、HelloWorld等 第二章:JpaRepository基本功能 包括:代码示例JpaRepository提供的CRUD功能,还有翻页、排序等功能 第三章:JpaRepository的查询 ...
使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速开发迭代,可用于开发模板,项目经过测试,可完美运行! 使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速...
spring data jpa1.7 中文
3. 与Spring全家桶结合紧密: 4. 成熟的框架和架构 常⻅的SQL性能问题,如何优雅处理? 2. 错综复杂的关联关系如何应对? 3. 万恶的LazyException本质是什么? 4. ⾼并发⾼性能要求的API服务要⽤JPA吗?
在Spring Boot 2.x版本中可以非常轻松、快速搞定持久层的开发动作,配置比SpringBoot+MyBatis还少,偶觉得它除了执行效果不如MyBatis外,在使用效率的情况下,使用Spring Data JPA的开发速度会比较MyBatis还快。...
│ 开篇词 勇敢走出舒适区,突破自己的技术瓶颈.mp4 ...│ 20 Spring JPA 中的 Hibernate 加载过程与配置项是怎么回事?.mp4 │ 21 Peritence Context 所表达的核心概念是什么?.mp4 │ 22 Seio