【黑马程序员】spring-data-入门

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

黑马程序员合肥中心编著【黑马程序员】springdata入门SpringData是什么SpringData是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。SpringData包含多个子项目:Commons-提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化JPA-简化创建JPA数据访问层和跨存储的持久层功能Hadoop-基于Spring的Hadoop作业配置和一个POJO编程模型的MapReduce作业Key-Value-集成了Redis和Riak,提供多个常用场景下的简单封装Document-集成文档数据库:CouchDB和MongoDB并提供基本的配置映射和资料库支持Graph-集成Neo4j提供强大的基于POJO的编程模型GraphRooAddOn-RoosupportforNeo4jJDBCExtensions-支持OracleRAD、高级队列和高级数据类型Mapping-基于Grails的提供对象映射框架,支持不同的数据库Examples-示例程序、文档和图数据库Guidance-高级文档SpringDataJPA是什么由Spring提供的一个用于简化JPA开发的框架nSpringDataJPA能干什么可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。除了CRUD外,还包括如分页、排序等一些常用的功能。SpringDataJPA有什么主要来看看SpringDataJPA提供的接口,也是SpringDataJPA的核心概念:1:Repository:最顶层的接口,是一个空的接口,目的是为了统一所有Repository的类型,且能黑马程序员合肥中心编著让组件扫描的时候自动识别。2:CrudRepository:是Repository的子接口,提供CRUD的功能3:PagingAndSortingRepository:是CrudRepository的子接口,添加分页和排序的功能4:JpaRepository:是PagingAndSortingRepository的子接口,增加了一些实用的功能,比如:批量操作等。5:JpaSpecificationExecutor:用来做负责查询的接口6:Specification:是SpringDataJPA提供的一个查询规范,要做复杂的查询,只需围绕这个规范来设置查询条件即可HelloWorldn环境构建在Eclipse里面构建一个普通的Java工程,主要就是要加入一堆的jar包。1:首先去官网下载SpringDataCommon和SpringDataJPA的包,把里面dist的jar包加入到工程中,这里是spring-data-commons-1.5.0.RELEASE.jar和spring-data-jpa-1.3.2.RELEASE.jar2:把Spring3.2.3的jar包添加到工程中3:JPA的实现选用的是Hibernate4.2.0,总共还需要额外加入如下的jar:antlr-2.7.7.jar、aopalliance-1.0.jar、asm-3.2.jar、aspectjrt-1.7.1.jar、aspectjweaver-1.7.1.jar、commons-beanutils-1.8.3.jar、commons-codec-1.7.jar、commons-collections-3.2.1.jar、commons-dbcp-1.4.jar、commons-fileupload-1.2.2.jar、commons-io-2.4.jar、commons-lang3-3.1.jar、commons-logging-1.1.1.jar、commons-pool-1.6.jar、dom4j-1.6.1.jar、黑马程序员合肥中心编著hibernate-commons-annotations-4.0.1.Final.jar、hibernate-core-4.2.0.Final.jar、hibernate-entitymanager-4.2.0.Final.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、javassist-3.15.0-GA.jar、jboss-logging-3.1.0.GA.jar、jboss-transaction-api_1.1_spec-1.0.0.Final.jar、mysql-connector-java-5.1.9.jar、slf4j-api-1.7.3.jarn实体对象,就是以前的实现方式@Entity@Table(name=tbl_user)publicclassUserModel{@IdprivateIntegeruuid;privateStringname;privateIntegerage;//省略getter/setter}nDAO的接口publicinterfaceUserRepositoryextendsJpaRepositoryUserModel,Integer{//空的,可以什么都不用写}无需提供实现,SpringDataJPA会为我们搞定一切n写个逻辑层的Service,其实就相当于DAO的客户端,用来测试@Service@TransactionalpublicclassClient{@AutowiredprivateUserRepositoryur;publicvoidtestAdd(UserModelum){ur.save(um);}publicstaticvoidmain(String[]args){ApplicationContextctx=newClassPathXmlApplicationContext(applicationContext.xml);Clientc=(Client)ctx.getBean(client);黑马程序员合肥中心编著UserModelum=newUserModel();um.setAge(1);um.setName(张三);um.setUuid(1);c.testAdd(um);}}n同样需要在Spring的配置文件中配置,基本跟使用注解的配置类似:?xmlversion=1.0encoding=UTF-8?beansxmlns=:xsi=:context=:aop=:tx=:jpa=:schemaLocation=://://://://://://://://://:component-scanbase-package=cn.javasscontext:exclude-filtertype=annotation“expression=org.springframework.stereotype.Controller//context:component-scanaop:aspectj-autoproxyproxy-target-class=true/!--开启注解事务只对当前配置文件有效--tx:annotation-driventransaction-manager=transactionManagerproxy-target-class=true/jpa:repositoriesbase-package=cn.javassrepository-impl-postfix=Implentity-manager-factory-ref=entityManagerFactorytransaction-manager-ref=transactionManager/jpa:repositoriesbeanid=entityManagerFactory黑马程序员合肥中心编著class=org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBeanpropertyname=dataSourceref=dataSource/propertyname=packagesToScanvalue=cn.javass/propertyname=persistenceProviderbeanclass=org.hibernate.ejb.HibernatePersistence//propertypropertyname=jpaVendorAdapterbeanclass=org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapterpropertyname=generateDdlvalue=false/propertyname=databasevalue=MYSQL/propertyname=databasePlatformvalue=org.hibernate.dialect.MySQL5InnoDBDialect/propertyname=showSqlvalue=true//bean/propertypropertyname=jpaDialectbeanclass=org.springframework.orm.jpa.vendor.HibernateJpaDialect//propertypropertyname=jpaPropertyMapmapentrykey=hibernate.query.substitutionsvalue=true1,false0/entrykey=hibernate.default_batch_fetch_sizevalue=16/entrykey=hibernate.max_fetch_depthvalue=2/entrykey=hibernate.generate_statisticsvalue=true/entrykey=hibernate.bytecode.use_reflection_optimi

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功