本节作为主要讲解Spring Data的环境搭建

  • JPA Spring Data :致力于减少数据访问层(DAO)的开发量。开发者唯一要做的就是声明持久层的接口,其他都交给Spring Data JPA来帮你完成!
  • 使用Spring Data JPA进行持久层开发需要的四个步骤:
  1. 配置Spring 整合 JPA
  2. 在Spring配置文件中配置Spring Data,让Spring 为声明的接口创建代理对象。配置了<jpa:repositories>后,Spring 初始化容器时将会扫描base-package 指定的包目录及其子目录,为继承Repository或其子接口的接口创建代理对象,并将代理对象注册为SpringBean,业务层便可以通过Spring的自动封装的特性来直接使用该对象。
  3. 声明持久层的接口,该接口继承Repository。Repository是一个标记型接口,它不包含任何方法,如必要,Spring Data 可实现Repository其他子接口,其中定义了一些常用的增删改查,以及分页相关的方法。
  4. 在接口中声明需要的方法。Spring Data将根据给定的策略,来为其生成实现代码。
  • 环境搭建

   1.所需要的包

    ① 加入spring包

      spring-aop-4.3.8.RELEASE.jar
      spring-aspects-4.3.8.RELEASE.jar
      spring-beans-4.3.8.RELEASE.jar
      spring-context-4.3.8.RELEASE.jar
      spring-core-4.3.8.RELEASE.jar
      spring-expression-4.3.8.RELEASE.jar
      spring-jdbc-4.3.8.RELEASE.jar
      spring-orm-4.3.8.RELEASE.jar
      spring-tx-4.3.8.RELEASE.jar
      spring-web-4.3.8.RELEASE.jar
      spring-webmvc-4.3.8.RELEASE.jar
      com.springsource.net.sf.cglib-2.2.0.jar
      com.springsource.org.aopalliance-1.0.0.jar
      com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
      commons-logging-1.1.1.jar
    ② 加入hibernate包
      antlr-2.7.7.jar
      dom4j-1.6.1.jar
      hibernate-commons-annotations-4.0.5.Final.jar
      hibernate-core-4.3.11.Final.jar
      hibernate-jpa-2.1-api-1.0.0.Final.jar
      jandex-1.1.0.Final.jar
      javassist-3.18.1-GA.jar
      jboss-logging-3.1.3.GA.jar
      jboss-logging-annotations-1.2.0.Beta1.jar
      jboss-transaction-api_1.2_spec-1.0.0.Final.jar
    ③ 加jpa的包
      hibernate-entitymanager-4.3.11.Final.jar
    ④ 加c3p0的包
      c3p0-0.9.2.1.jar
      hibernate-c3p0-4.3.11.Final.jar
      mchange-commons-java-0.2.3.4.jar
    ⑤ 加mysql的驱动
      mysql-connector-java-5.1.7-bin.jar
    ⑥加入springData 
      spring-data-commons-1.6.2.RELEASE.jar
      spring-data-jpa-1.4.2.RELEASE.jar
    ⑦加入 slf4j-api-1.6.1.jar

  2.Spring Bean配置文件

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<context:property-placeholder location="classpath:db.properties" />
<!--配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
</bean>
<!--配置JPA的entityManagerFactory -->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!-- 配置JPA的实现 -->
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean>
</property>
<property name="packagesToScan" value="com.ntjr.springdata"></property>
<property name="jpaProperties">
<props>
<!-- 二级缓存相关 -->
<!-- <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
<prop key="net.sf.ehcache.configurationResourceName">ehcache-hibernate.xml</prop> -->
<!-- 生成的数据表的列的映射策略 -->
<prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
<!-- hibernate 基本属性 -->
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<!--配置事物管理器 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"></property>
</bean>
<!-- 配置支持注解的事物 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!--配置springData -->
<!--base-package:扫描Repository Bean所在的package -->
<jpa:repositories base-package="com.ntjr.springdata"
entity-manager-factory-ref="entityManagerFactory"
transaction-manager-ref="transactionManager">
</jpa:repositories>
</beans>

applicationContext.xml

  3.数据库持久类

 package com.ntjr.springdata;

 import java.util.Date;

 import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table; @Table(name = "JPA_PERSONS")
@Entity
public class Person { private Integer id;
private String lastName; private String email;
private Date birth; @GeneratedValue
@Id
public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getLastName() {
return lastName;
} @Column(name = "LAST_NAME")
public void setLastName(String lastName) {
this.lastName = lastName;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} public Date getBirth() {
return birth;
} public void setBirth(Date birth) {
this.birth = birth;
} @Override
public String toString() {
return "Person [id=" + id + ", lastName=" + lastName + ", email=" + email + ", birth=" + birth + "]";
} }

Person.java

  4.DAO

 package com.ntjr.springdata;

 import org.springframework.data.repository.Repository;

 /**
*
* 1、实现Repository接口
* 2、通过注解的方式@RepositoryDefinition将一个bean定义为Repository接口
*/
public interface PersonRepsitory extends Repository<Person, Integer> {
// 根据lastName获取对应的person
Person getByLastName(String lastName);
}

PersonRepository.java

  5.测试

 package com.ntjr.springdata.test;

 import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.ntjr.springdata.Person;
import com.ntjr.springdata.PersonRepsitory; public class SpringDataTest { private ApplicationContext ctx = null;
{
ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
} @Test
public void getPersonForLastName() {
PersonRepsitory personRepsitory = ctx.getBean(PersonRepsitory.class);
Person person = personRepsitory.getByLastName("AA");
System.out.println(person);
} }

SpringDataTest.java

SpringData系列一 Spring Data的环境搭建的更多相关文章

  1. Spring Data 开发环境搭建(二)

    首先咱们先创建一个maven工程 在pom.xml加入以下 依赖 <!--Mysql 驱动包--> <dependency> <groupId>mysql</ ...

  2. Spring Data MongoDB 环境搭建

    一.开发环境 spring版本:4.0.6.RELEASE spring-data-mongodb版本:1.4.1.RELEASE junit版本 4.11 maven版本:3.0.5 二.pom.x ...

  3. SpringBoot系列之Spring Data Jpa集成教程

    SpringBoot系列之Spring Data Jpa集成教程 Spring Data Jpa是属于Spring Data的一个子项目,Spring data项目是一款集成了很多数据操作的项目,其下 ...

  4. spring boot 开发环境搭建(Eclipse)

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  5. SpringData JPA的学习笔记之环境搭建

    一.环境搭建 1.加入jar包   spring jar+jpa jar +springData jar >>SpringData jar包     2.配置applicationCont ...

  6. SpringBoot系列教程JPA之基础环境搭建

    JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Spring Data JPA是在 Hibernat ...

  7. Spring4- 01 - Spring框架简介及官方压缩包目录介绍- Spring IoC 的概念 - Spring hello world环境搭建

    一. Spring 框架简介及官方压缩包目录介绍 主要发明者:Rod Johnson 轮子理论推崇者: 2.1 轮子理论:不用重复发明轮子. 2.2 IT 行业:直接使用写好的代码. Spring 框 ...

  8. ①spring简介以及环境搭建(一)

    注*(IOC:控制反转.AOP:面向切面编程) spring官网:http://spring.io/ spring简介: spring是一个开源框架 spring为简化企业级应用开发而生,使用Spri ...

  9. Hibernate 系列 02 - Hibernate介绍及其环境搭建

    引导目录: Hibernate 系列教程 目录 昨晚喝多了,下午刚清醒,继续搞Hibernate.走起. 觉得还行的话,记得点赞哈,给我这个渣渣点学习的动力.有错误的话也请指出,省的我在错误上走了不归 ...

随机推荐

  1. English Learn

    English Learn 一直决定好好学习英语.越来越觉得英语的重要性,解决日常问题.学习新东西.使用google时都经常碰到英文.所以觉得在blog上记录些学习英语的文章,也算是对自己的一种监督. ...

  2. javascript与jQuery选项卡效果

    HTML结构: <!doctype html><html><head><meta charset="utf-8"><title ...

  3. 前端MVC框架之 Angular

    一.什么是Angular jQuery,它属于一种类库(一系列函数的集合),以DOM为驱动核心:而Angular是一种 MVC 的前端框架,则是前端框架,以数据和逻辑为驱动核心,它有着诸多特性,最重要 ...

  4. C#调用webbrowser,阻止弹出新HTML页面

    参考资料: 1.C#调用webbrowser,阻止弹出新IE窗口 http://www.cnblogs.com/blindman/p/3819649.html 2.[WPF]监听WPF的WebBrow ...

  5. Python之路-Linux命令基础(6)

    作业一:完成作业未做完的集群架构 作业二:临时配置网络(ip,网关,dns)+永久配置 1.ip配置 [root@localhost mail]# ifconfig eno16777736 192.1 ...

  6. Java反射理解

    序言 一般而言,动态语言是指程序运行时,允许改变程序结构或变量类型的语言. 从这个观点来看,Perl.Python.Ruby是动态语言,C++.Java.C#不是动态语言. 但是Java有动态相关机制 ...

  7. quartus ii有符号数的问题(待完善)

    1.有符号数是以补码的形式存储的,在modelsim仿真时,补码自动转换为有符号的十进制数. 2.关于截位的问题: 当只取寄存器中的其中m位时,这时候取得的数是按照无符号位来处理的? 3.reg型数据 ...

  8. 一些CSS/JS小技巧

    CSS部分 1.文本框不可点击 .inputDisabled{ background-color: #eee;cursor: not-allowed;} 2.禁止复制粘贴 onpaste=" ...

  9. 23(java/io/data_io)

    package test_ppt;import java.io.*;public class test_ppt{ public static void main(String args[]) thro ...

  10. Tensorflow学习笔记---0--TensorBoard

    运行mnist_with_summaries学习TensorBoard时,由于需要GPU支持,运行窗口报错:Couldn't open CUDA library cupti64_80.dll 解决办法 ...