




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Spring Data JPA初使用 分类: spring 2013-02-17 21:56 704人阅读 评论(0) 收藏 举报 springSpring我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度。在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样优秀的Spring Data JPA。通常我们写持久层,都是先写一个接口,再写接口对应的实现类,在实现类中进行持久层的业务逻辑处理。而现在,Spring Data JPA帮助我们自动完成了持久层的业务逻辑处理,我们要做的,仅仅是声明一个持久层接口。1、下载开发所需要的发布包。1)spring-framework-3.1.2.RELEASE-with-docs.zip下载地址:/spring-framework2)hibernate-release-4.1.6.Final.zip下载地址:/packages/hibernate3)Spring Data JPASpring Data JPA下载地址:/spring-data/jpaSpring Data Commons下载地址:/spring-data/commons4)其他一些依赖包可以从/repository/app/library上查找下载2、新建一个Web项目 spring-data-jpa,把相应的jar包放到/WebRoot/WEB-INF/lib目录下。 我也没有挑选哪些是不需要的,最后用到的jar如下:.aspectj.weaver-1.6.3.RELEASE.jarcommons-lang3-3.1.jardom4j-1.6.1.jarhibernate-commons-annotations-4.0.1.Final.jarhibernate-core-4.1.6.Final.jarhibernate-entitymanager-4.1.6.Final.jarhibernate-jpa-2.0-api-1.0.1.Final.jarjavassist-3.15.0-GA.jarjboss-logging-3.1.0.GA.jarjboss-transaction-api_1.1_spec-1.0.0.Final.jarlog4j-1.2.17.jarmysql-connector-java-5.0.4-bin.jarorg.springframework.aop-3.1.2.RELEASE.jarorg.springframework.asm-3.1.2.RELEASE.jarorg.springframework.aspects-3.1.2.RELEASE.jarorg.springframework.beans-3.1.2.RELEASE.jarorg.springframework.context-3.1.2.RELEASE.jarorg.springframework.context.support-3.1.2.RELEASE.jarorg.springframework.core-3.1.2.RELEASE.jarorg.springframework.expression-3.1.2.RELEASE.jarorg.springframework.instrument-3.1.2.RELEASE.jarorg.springframework.instrument.tomcat-3.1.2.RELEASE.jarorg.springframework.jdbc-3.1.2.RELEASE.jarorg.springframework.jms-3.1.2.RELEASE.jarorg.springframework.js.resources-2.3.0.RELEASE.jarorg.springframework.orm-3.1.2.RELEASE.jarorg.springframework.oxm-3.1.2.RELEASE.jarorg.springframework.test-3.1.2.RELEASE.jarorg.springframework.transaction-3.1.2.RELEASE.jarorg.springframework.web-3.1.2.RELEASE.jarorg.springframework.web.portlet-3.1.2.RELEASE.jarorg.springframework.web.servlet-3.1.2.RELEASE.jarslf4j-api-1.6.6.jarslf4j-log4j12-1.6.6.jarspring-data-commons-core-1.3.0.M1.jarspring-data-jpa-1.0.2.RELEASE.jar3、在MySql数据库中建立一个叫spring_data_jpa的数据库。create database spring_data_jpa default character set utf8;4、JPA配置文件persistence.xml1)在src目录下建立一个叫META-INF的文件夹2)在META-INF文件夹下建立persistence.xml文件persistence.xml内容如下: org.hibernate.ejb.HibernatePersistence 5、Spring配置文件applicationContext.xml在src目录下建立applicationContext.xmlapplicationContext.xml内容如下: 6、web.xmlweb.xml内容如下: webAppRootKey springdatajpa.root log4jConfigLocation classpath:perties org.springframework.web.util.Log4jConfigListener characterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 characterEncodingFilter /* contextConfigLocation classpath:applicationContext.xml org.springframework.web.context.ContextLoaderListener org.springframework.web.util.IntrospectorCleanupListener index.jsp 7、日志配置在src目录下建立perties文件perties内容如下:log4j.rootLogger=INFO,CONSOLE,FILE.apache=true # 应用于控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.Threshold=INFO log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=framework %d - %c -%-4r %t %-5p %c %x - %m%n #log4j.appender.CONSOLE.layout.ConversionPattern=start%dDATEDATE%n%pPRIORITY%n%xNDC%n%tTHREAD n%cCATEGORY%n%mMESSAGE%n%n #应用于文件 log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.FILE.File=$springdatajpa.root/springdatajpa.log log4j.appender.FILE.Append=true log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=framework %d - %c -%-4r %t %-5p %c %x - %m%n 8、所有环境配完毕,开始写一个Spring Data JPA 的增删改查1)建立相应的包2)领域模型实体类Userpackage cn.luxh.app.domain;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;/* * 用户信息 * author Luxh * 2012-8-30 */EntityTable(name=t_user)public class User Id GeneratedValue private Integer id; /账号 private String account; /姓名 private String name; /密码 private String password; /省略 getter和setter方法3)声明持久层接口UserRepository让UserRepository接口继承CrudRepository,T是领域实体,ID是领域实体的主键类型。CrudRepository实现了相应的增删改查方法。package cn.luxh.app.repository;import org.springframework.data.repository.CrudRepository;import cn.luxh.app.domain.User;/* * 用户持久层接口 * author Luxh * 2012-8-31 */public interface UserRepository extends CrudRepository 不再需要持久层接口实现类。4)业务层一般多层架构是控制层调用业务层,业务层再调用持久层。所以这里写个业务层。a、业务层接口:package cn.luxh.app.service;import cn.luxh.app.domain.User;/* * 用户业务接口 * author Luxh * 2012-8-31 */public interface UserService /* * 保存用户 * param user */ void saveUser(User user); /* * 根据id查找用户 * param id * return */ User findUserById(Integer id); /* * 更新用户 * param user */ void updateUser(User user); /* * 根据ID删除用户 * param id */ void deleteUserById(Integer id); b、业务层接口实现类package cn.luxh.app.service;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import cn.luxh.app.domain.User;import cn.luxh.app.repository.UserRepository;/* * 用户业务服务实现类 * author Luxh * 2012-8-31 */Service(userService)public class UserServiceImpl implements UserService Autowired private UserRepository userRepository;/注入UserRepository Override Transactional public void saveUser(User user) userRepository.save(user); Override Transactional(readOnly=true) public User findUserById(Integer id) return userRepository.findOne(id); Override Transactional public void updateUser(User user) userRepository.save(user); Override Transactional public void deleteUserById(Integer id) userRepository.delete(id); 9)编写测试用例在执行测试的时候,发现如下错误:Caused by: java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode; at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:633) at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:268) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) . 51 more网上说是新版本的Hibernate跟javaee.jar里面的JPA接口冲突了。 解决方法:移除MyEclipse自带的Java EE 5 Libraries,自己新建一个user libraries,加入Java EE中的jsf-api.jar、jsf-impl.jar和jstl-1.2.jar,再加入Tomcat中自带的servlet- api.jar用servlet-api.jar替换掉javaee.jar就没问题了。测试代码:package cn.luxh.app.test;import org.junit.Assert;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import cn.luxh.app.domain.User;import cn.luxh.app.service.UserService;RunWith(SpringJUnit4ClassRunner.class)ContextConfiguration(/applicationContext.xml) public class UserTest Autowired private UserService userService; /保存用户 Test public void testSaveUser() User user = new User(); user.setAccount(LiHuai); user.setName(李坏); user.setPassword(123456); userService.saveUser(user); /根据id查找用户 Test public void testFindUs
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目管理活动开展实施纲要
- 户外攀岩活动安全保障协议样本
- 公共停车设施租赁及产权买卖合同
- 尿潴留的治疗原则
- 只能用糖配的药物
- 怎样画细胞核
- 高中化学必修1物质转化关系图及相应化学方程式
- 高考作文冲刺押题五:“穿针引线”学做事 -2025年高考语文复习作文导写
- 颁奖典礼动态模板26
- 护理不良事件与隐患缺陷
- 深圳2025年深圳市住房公积金管理中心员额人员招聘8人笔试历年参考题库附带答案详解
- 2025CSCOCSCO宫颈癌的诊疗指南更新
- 委托投资协议范本
- 厂房物业托管协议书
- 2022联合国电子政务调查报告(中文版)
- 物业费结算及社区养老服务机构合作协议
- 2025人工智能工程师笔试题及答案
- 语文中考文学类文本托物言志专题复习教学设计
- 安徽省合肥市2025届高三下学期5月教学质量检测(三模)英语试卷(含音频)
- 贵州国企招聘2025贵州乌江煤层气勘探开发有限公司招聘16人笔试参考题库附带答案详解
- 炊事员培训试题及答案
评论
0/150
提交评论