您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 【黑马程序员】Spring data jpa是什么
黑马程序员成都中心编著【黑马程序员】Springdatajpa是什么本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring整合的环境中实现。大致整理一个提纲:1、Spring-data-jpa的基本介绍;2、和Spring整合;3、基本的使用方式;4、复杂查询,包括多表关联,分页,排序等;现在开始:1、Spring-data-jpa的基本介绍:JPA诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,百度百科说是JDK为了实现ORM的天下归一,目前也是在按照这个方向发展,但是还没能完全实现。在ORM框架中,Hibernate是一支很大的部队,使用很广泛,也很方便,能力也很强,同时Hibernate也是和JPA整合的比较良好,我们可以认为JPA是标准,事实上也是,JPA几乎都是接口,实现都是Hibernate在做,宏观上面看,在JPA的统一之下Hibernate很良好的运行。上面阐述了JPA和Hibernate的关系,那么Spring-data-jpa又是个什么东西呢?这地方需要稍微解释一下,我们做Java开发的都知道Spring的强大,到目前为止,企业级应用Spring几乎是无所不能,无所不在,已经是事实上的标准了,企业级应用不使用Spring的几乎没有,这样说没错吧。而Spring整合第三方框架的能力又很强,他要做的不仅仅是个最早的IOC容器这么简单一回事,现在Spring涉及的方面太广,主要是体现在和第三方工具的整合上。而在与第三方整合这方面,Spring做了持久化这一块的工作,我个人的感觉是黑马程序员成都中心编著Spring希望把持久化这块内容也拿下。于是就有了Spring-data-**这一系列包。包括,Spring-data-jpa,Spring-data-template,Spring-data-mongodb,Spring-data-redis,还有个民间产品,mybatis-spring,和前面类似,这是和mybatis整合的第三方包,这些都是干的持久化工具干的事儿。这里介绍Spring-data-jpa,表示与jpa的整合。2、我们都知道,在使用持久化工具的时候,一般都有一个对象来操作数据库,在原生的Hibernate中叫做Session,在JPA中叫做EntityManager,在MyBatis中叫做SqlSession,通过这个对象来操作数据库。我们一般按照三层结构来看的话,Service层做业务逻辑处理,Dao层和数据库打交道,在Dao中,就存在着上面的对象。那么ORM框架本身提供的功能有什么呢?答案是基本的CRUD,所有的基础CRUD框架都提供,我们使用起来感觉很方便,很给力,业务逻辑层面的处理ORM是没有提供的,如果使用原生的框架,业务逻辑代码我们一般会自定义,会自己去写SQL语句,然后执行。在这个时候,Spring-data-jpa的威力就体现出来了,ORM提供的能力他都提供,ORM框架没有提供的业务逻辑功能Spring-data-jpa也提供,全方位的解决用户的需求。使用Spring-data-jpa进行开发的过程中,常用的功能,我们几乎不需要写一条sql语句,至少在我看来,企业级应用基本上可以不用写任何一条sql,当然spring-data-jpa也提供自己写sql的方式,这个就看个人怎么选择,都可以。我觉得都行。2.1与Spring整合我们从spring配置文件开始,为了节省篇幅,这里我只写出配置文件的结构。?xmlversion=1.0encoding=UTF-8?beansxmlns=:xsi=黑马程序员成都中心编著xmlns:p=:aop=:tx=:context=:mongo=:jpa=:schemaLocation=://://://://://://://://://://://!--数据库连接--context:property-placeholderlocation=classpath:your-config.properties黑马程序员成都中心编著ignore-unresolvable=true/!--service包--context:component-scanbase-package=yourservicepackage/!--使用cglib进行动态代理--aop:aspectj-autoproxyproxy-target-class=true/!--支持注解方式声明式事务--tx:annotation-driventransaction-manager=transactionManagerproxy-target-class=true/!--dao--jpa:repositoriesbase-package=yourdaopackagerepository-impl-postfix=Implentity-manager-factory-ref=entityManagerFactorytransaction-manager-ref=transactionManager/!--实体管理器--beanid=entityManagerFactoryclass=org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBeanpropertyname=dataSourceref=dataSource/propertyname=packagesToScanvalue=yourentitypackage/propertyname=persistenceProviderbeanclass=org.hibernate.ejb.HibernatePersistence//propertypropertyname=jpaVendorAdapterbean黑马程序员成都中心编著class=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_optimizervalue=true/entrykey=hibernate.cache.use_second_level_cachevalue=false/entrykey=hibernate.cache.use_query_cachevalue=false/黑马程序员成都中心编著/map/property/bean!--事务管理器--beanid=transactionManagerclass=org.springframework.orm.jpa.JpaTransactionManagerpropertyname=entityManagerFactoryref=entityManagerFactory//bean!--数据源--beanid=dataSourceclass=com.alibaba.druid.pool.DruidDataSourceinit-method=initdestroy-method=closepropertyname=driverClassNamevalue=${driver}/propertyname=urlvalue=${url}/propertyname=usernamevalue=${userName}/propertyname=passwordvalue=${password}/propertyname=initialSizevalue=${druid.initialSize}/propertyname=maxActivevalue=${druid.maxActive}/propertyname=maxIdlevalue=${druid.maxIdle}/propertyname=minIdlevalue=${druid.minIdle}/pr
本文标题:【黑马程序员】Spring data jpa是什么
链接地址:https://www.777doc.com/doc-3953557 .html