一、环境搭建

1、加入jar包

  spring jar+jpa jar +springData jar
>>SpringData jar包
 
 
2、配置applicationContext.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xmlns:jpa="http://www.springframework.org/schema/data/jpa"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
  9. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
  10. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
  11.  
  12. <!-- 配置自动扫描的包 -->
  13. <context:component-scan base-package="com.atguigu.springdata"></context:component-scan>
  14.  
  15. <!-- 1. 配置数据源 -->
  16. <context:property-placeholder location="classpath:db.properties"/>
  17.  
  18. <bean id="dataSource"
  19. class="com.mchange.v2.c3p0.ComboPooledDataSource">
  20. <property name="user" value="${jdbc.user}"></property>
  21. <property name="password" value="${jdbc.password}"></property>
  22. <property name="driverClass" value="${jdbc.driverClass}"></property>
  23. <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
  24.  
  25. <!-- 配置其他属性 -->
  26. </bean>
  27.  
  28. <!-- 2. 配置 JPA 的 EntityManagerFactory -->
  29. <bean id="entityManagerFactory"
  30. class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  31. <property name="dataSource" ref="dataSource"></property>
  32. <property name="jpaVendorAdapter">
  33. <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean>
  34. </property>
  35. <property name="packagesToScan" value="com.atguigu.springdata"></property>
  36. <property name="jpaProperties">
  37. <props>
  38. <!-- 二级缓存相关 -->
  39. <!--
  40. <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
  41. <prop key="net.sf.ehcache.configurationResourceName">ehcache-hibernate.xml</prop>
  42. -->
  43. <!-- 生成的数据表的列的映射策略 -->
  44. <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
  45. <!-- hibernate 基本属性 -->
  46. <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
  47. <prop key="hibernate.show_sql">true</prop>
  48. <prop key="hibernate.format_sql">true</prop>
  49. <prop key="hibernate.hbm2ddl.auto">update</prop>
  50. </props>
  51. </property>
  52. </bean>
  53.  
  54. <!-- 3. 配置事务管理器 -->
  55. <bean id="transactionManager"
  56. class="org.springframework.orm.jpa.JpaTransactionManager">
  57. <property name="entityManagerFactory" ref="entityManagerFactory"></property>
  58. </bean>
  59.  
  60. <!-- 4. 配置支持注解的事务 -->
  61. <tx:annotation-driven transaction-manager="transactionManager"/>
  62.  
  63. <!-- 5. 配置 SpringData -->
  64. <!-- 加入 jpa 的命名空间 -->
  65. <!-- base-package: 扫描 Repository Bean 所在的 package -->
  66. <jpa:repositories base-package="com.atguigu.springdata"
  67. entity-manager-factory-ref="entityManagerFactory"></jpa:repositories>
  68.  
  69. </beans>
 
//db.properties
  1. jdbc.user=root
  2. jdbc.password=123456
  3. jdbc.jdbcUrl=jdbc:mysql:///jpa
  4. jdbc.driverClass=com.mysql.jdbc.Driver
3、创建实体类Person
  1. package com.atguigu.springdata;
  2.  
  3. import java.util.Date;
  4.  
  5. import javax.persistence.Entity;
  6. import javax.persistence.GeneratedValue;
  7. import javax.persistence.Id;
  8. import javax.persistence.Table;
  9. @Table(name="t_person")
  10. @Entity
  11. public class Person {
  12.  
  13. private Integer id;
  14. private String lastname;
  15. private String email;
  16. private Date birthday;
  17. @GeneratedValue
  18. @Id
  19. public Integer getId() {
  20. return id;
  21. }
  22. public void setId(Integer id) {
  23. this.id = id;
  24. }
  25. public String getLastname() {
  26. return lastname;
  27. }
  28. public void setLastname(String lastname) {
  29. this.lastname = lastname;
  30. }
  31. public String getEmail() {
  32. return email;
  33. }
  34. public void setEmail(String email) {
  35. this.email = email;
  36. }
  37. public Date getBirthday() {
  38. return birthday;
  39. }
  40. public void setBirthday(Date birthday) {
  41. this.birthday = birthday;
  42. }
  43. @Override
  44. public String toString() {
  45. return "Person [id=" + id + ", lastname=" + lastname + ", email=" + email + ", birthday=" + birthday + "]";
  46. }
  47.  
  48. }

  

4、继承Repository接口
Repository<Class<T>clazz,Object obj>,其中Class<T>clazz是实体类,obj是主键类型
  1. package com.atguigu.springdata.dao;
  2.  
  3. import org.springframework.data.repository.Repository;
  4.  
  5. import com.atguigu.springdata.Person;
  6.  
  7. public interface PersonRespository extends Repository<Person,Integer>{
  8.  
  9. Person getByLastname(String lastname);
  10.  
  11. }

  

>>Repository接口说明:
  • Repository 接口是 Spring Data 的一个核心接口,它不提供任何方法,开发者需要在自己定义的接口中声明需要的方法
  • public interface Repository<T, ID extends Serializable> { }
  • Spring Data可以让我们只定义接口,只要遵循 Spring Data的规范,就无需写实现类。
  • 与继承 Repository 等价的一种方式,就是在持久层接口上使用 @RepositoryDefinition 注解,并为其指定 domainClass 和 idClass 属性。如下两种方式是完全等价的
  1. package com.atguigu.springdata.dao;
  2.  
  3. import org.springframework.data.repository.RepositoryDefinition;
  4.  
  5. import com.atguigu.springdata.Person;
  6.  
  7. @RepositoryDefinition(domainClass=Person.class,idClass=Integer.class)
  8. public interface PersonRepository2 {
  9. Person getByLastname(String lastname);
  10. }
 
>>Repository的子接口
     基础的 Repository 提供了最基本的数据访问功能,其几个子接口则扩展了一些功能。它们的继承关系如下: 
  • Repository: 仅仅是一个标识,表明任何继承它的均为仓库接口类
  • CrudRepository: 继承 Repository,实现了一组 CRUD 相关的方法
  • PagingAndSortingRepository: 继承 CrudRepository,实现了一组分页排序相关的方法
  • JpaRepository: 继承 PagingAndSortingRepository,实现一组 JPA 规范相关的方法
  • 自定义的 XxxxRepository 需要继承 JpaRepository,这样的 XxxxRepository 接口就具备了通用的数据访问控制层的能力。
  • JpaSpecificationExecutor: 不属于Repository体系,实现一组 JPA Criteria 查询相关的方法
 

SpringData JPA的学习笔记之环境搭建的更多相关文章

  1. Android Studio 学习笔记(一)环境搭建、文件目录等相关说明

    Android Studio 学习笔记(一)环境搭建.文件目录等相关说明 引入 对APP开发而言,Android和iOS是两大主流开发平台,其中区别在于 Android用java语言,用Android ...

  2. 我的Java学习笔记 -开发环境搭建

    开始学习Java~ 一.Java简介 Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言. Java分为三个体系: JavaSE(J2SE) ...

  3. Django学习笔记 开发环境搭建

    为什么使用django?1.支持快速开发:用python开发:数据库ORM系统,并不需要我们手动地构造SQL语句,而是用python的对象访问数据库,能够提升开发效率.2.大量内置应用:后台管理系统a ...

  4. cocos2d-x lua 学习笔记(1) -- 环境搭建

    Cocos2d-x 3.0以上版本的环境搭建和之前的Cocos2d-x 2.0 版差异较大的,同时从Cocos2d-x 3.0项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后, ...

  5. Mybatis学习笔记之---环境搭建与入门

    Mybatis环境搭建与入门 (一)环境搭建 (1)第一步:创建maven工程并导入jar包 <dependencies> <dependency> <groupId&g ...

  6. 前端框架vue学习笔记:环境搭建

    兼容性 不兼容IE8以下 Vue Devtools 能够更好的对界面进行审查和调试 环境搭建 1.nodejs(新版本的集成了npm)[npm是node包管理 node package manager ...

  7. Web安全测试学习笔记 - vulhub环境搭建

    Vulhub和DVWA一样,也是开源漏洞靶场,地址:https://github.com/vulhub/vulhub 环境搭建过程如下: 1. 下载和安装Ubuntu 16.04镜像,镜像地址:htt ...

  8. 【Django学习笔记】-环境搭建

    对于初学django新手,根据以下步骤可以快速进行Django环境搭建 虚拟环境创建 使用virtualenv创建并启用虚拟机环境 ,关于virtualenv可参考https://www.yuque. ...

  9. go 学习笔记之环境搭建

    千里之行始于足下,开始 Go 语言学习之旅前,首先要搭建好本地开发环境,然后就可以放心大胆瞎折腾了. Go 的环境安装和其他语言安装没什么特别注意之处,下载安装包下一步下一步直到完成,可能唯一需要注意 ...

随机推荐

  1. 【夸QT在十五】ctkPluginFrameWork插件系统Windows编译器

    采用ctkPluginFramework作为一个插件系统开发框架确实有很多优点. 有些车站最近收到的一封信,每个人都想用ctkPluginFramework但我不知道如何建立,本教程对谈ctkPlug ...

  2. 高级项目 它 集群环境建设(两)MySQL簇

    最后博文我们介绍一下相关概念集群,今天我们要介绍的博文MySQL相关内容集群. 1.MySQL集群简单介绍 MySQL群集技术在分布式系统中为MySQL数据提供了冗余特性,增强了安全性,使得单个MyS ...

  3. 802.11(wifi)的MAC层功能

    MAC层是802.11的主要功能部分.上层应用通过调用MAC层提供的接口原语调用MAC层的功能. MAC一共向上提供了2大类接口原语,共30种.数据(1)和管理(29).数据部分就是提供普通数据包的收 ...

  4. HttpClient文件上传下载

    1 HTTP HTTP 协议可能是如今 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序须要直接通过 HTTP 协议来訪问网络资源. 尽管在 JDK 的 java.net ...

  5. jvm调音

    jvm性能调优的目地:1)控制jvm的堆栈大小.比方当你的程序年轻代对象在某个时间段产生的比較多的时候,就须要控制年轻代的堆大小. 同一时候还要控制总的JVM大小避免内存溢出 2)控制GC的行为. G ...

  6. 为什么tap事件绑定在document上,而不是对象本身上

    1.在移动端前端开发,click事件有300ms的延时,为了提升用户体验,快速响应.zepto添加了tap事件.tap是在手指触屏横纵向移动距离小于30px,触发tap事件.移动距离的判断是通过tou ...

  7. JavaHTTP下载视频

    控制层类: package com.grab.video.controller; import java.io.BufferedOutputStream; import java.io.Buffere ...

  8. sails 相关文章

    Node 框架之sails   http://cnodejs.org/topic/555c3c82e684c4c8088a0ca1

  9. Hibernate HQL详细说明

    1.  Hibernate HQL详细说明 1.1.  hql一个简短的引论 Hibernate它配备了一种非常强大的查询语言.这种语言看起来非常像SQL.但是不要 要对相位的语法结构似,HQL是很有 ...

  10. SpringMVC Ajax返回的请求json 的方式来解决在中国字符串乱码问题

    1.org.springframework.http.converter.StringHttpMessageConverter类是类处理请求或相应的字符串.和默认字符集ISO-8859-1,所以当返回 ...