Spring Data Jpa示例(IntelliJ maven项目)

1. 在IntelliJ中新建maven项目

给出一个建好的示例,(本示例中省略了业务逻辑组件UserService)

2. 在pom.xml中配置依赖

包括:
spring-context
spring-orm
spring-data-jpa
hibernate-core
hibernate-entitymanager
mysql-connector-java
commons-dbcp
junit
spring-test

代码如下:

<dependencies>
    <!-- Spring & Spring Data JPA -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.2.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>4.2.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.9.1.RELEASE</version>
    </dependency>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.11.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.3.11.Final</version>
    </dependency>

    <!-- MySQL -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.37</version>
    </dependency>
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
    </dependency>

    <!-- Junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>4.2.3.RELEASE</version>
    </dependency>
</dependencies>

3. resources右键new一个Xml Configuration File--Spring Config配置文件:spring-config.xml(或者applicationContext.xml)

    配置dataSource、entityManagerFactory、transactionManager等。

<?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:jpa="http://www.springframework.org/schema/data/jpa"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <jpa:repositories base-package="com.xin"/>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/javaee"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="packagesToScan" value="com.xin"/>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="database" value="MYSQL"/>
                <property name="generateDdl" value="true"/>
                <property name="showSql" value="true"/>
                <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            </bean>
        </property>
        <property name="jpaProperties">
            <value>
                hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
                hibernate.hbm2ddl.auto=update
                hibernate.show_sql=true    <!--此处的设置可以覆盖jpaVendorAdapter中的相关设置-->
                <!--hibernate.format_sql=true-->
            </value>
        </property>
    </bean>

    <!--配置针对JPA的局部事务管理器-->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>
    <!--根据事务注解来生成事务代理-->
    <tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

4. 新建User实体类,并进行Annotation注解

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String firstname, lastname;
    private int age;
    private String address;
//省略构造方法和setter、getter方法
}

5. 新建DAO组件:UserRepository接口

让此接口继承Repository、CrudRepository、PagingAndSortingRepositories 或者 JpaRepository。JpaRepository接口有一实现类SimpleJpaRepository,上述接口声明的方法均由该类实现。

public interface UserRepository extends JpaRepository<User, Long> {
    //可以根据方法名进行衍生查询,也可以自定义查询。
    @Query("select u from User u where u.lastname=?1")
    List<User> findByLastname(String lastname);

    Long countByLastname(String lastname);
}

6. 接下来便可使用junit单元测试类进行测试了

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring-config.xml")
public class UserRepositoryTest {
    @Autowired
    private UserRepository userRepository;

    @Test
    public void testFindByLastname() throws Exception {
        User user = new User("lunhui","wei",28, "nanle");
        userRepository.save(user);
    }
}
时间: 2024-08-27 21:55:56

Spring Data Jpa示例(IntelliJ maven项目)的相关文章

Spring Boot中使用Spring Data JPA示例

JPA是Java Persistence API的简称,是sun公司早期推出的Java持久层规范,目前实现JPA规范的主流框架有Hibernate.OpenJPA等.Hibernate框架是当前较为流行的JPA实现之一,在Spring Data JPA中,默认底层实现也是使用的Hibernate. Spring Data JPA示例搭建 Spring Boot 提供了一个"spring-boot-starter-data-jpa"模块,在项目中使用这个模块,就可以简单的整合Spring

spring + springMVC + spring Data + jpa + maven 项目框架搭建

首先看一下项目结构: 所用到的jar(pom.xml): <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xs

最近项目中使用Spring data jpa 踩过的坑

最近在做一个有关OA项目中使用spring data JPA 操作数据库,结果遇到了补个不可思议的麻烦.困惑了好久. 首先看一下问题吧,这就是当时测试"设置角色时,需要首先删除该用户已经拥有的角色时"报错如下图: 一开始遇到这个问题 并没有感觉到有多大问题,后来就找了几个小时还是没有结果....后来在网上搜了好多还是没有找到结果...这时的自己就崩溃了,于是就去网上 搜索有关spring data jpa 相关Insert 和delete 及update的等操作问题,结果一眼就看到了问

Spring Boot2 系列教程(二十三)理解 Spring Data Jpa

有很多读者留言希望松哥能好好聊聊 Spring Data Jpa! 其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没和大伙聊过,因此本文就和大家来仔细聊聊 Spring Data 和 Jpa! 本文大纲: 1. 故事的主角 1.1 Jpa 1.1.1 JPA 是什么 Java Persistence API:用于对象持久化的 API Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层 1.1.2 JPA 和 Hibernate 的关

Spring Boot教程35——Spring Data JPA

Hibernate是数据访问解决技术的绝对霸主.JPA是由Hibernate主导的一个基于O/R映射的标准规范.O/R映射即将领域模型类和数据库的表进行映射,通过程序操作对象而实现表数据操作的能力,让数据访问操作无须关注数据库相关的技术. Spring Data JPA介绍 1.定义数据访问层 使用Spring Data JPA建立数据访问层十分简单,只需定义一个继承JpaRepository的接口即可: public interface PersonRepository extends Jpa

学习Spring Data Jpa

首先,抛开Spring,先来谈谈JPA.      1.JPA是什么? JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.  说到底还是一个ORM框架,不过是Sun为了希望整合所有的ORM框架而推出的规范,总的来说没有什么大的区别.依旧是是开发者从复杂的SQL与JDBC中脱离出来.       2.实际中使用JPA 首先在数据库中建库与表,MySQL中脚本如下 1 CREATE DATABAS

Spring MVC&Spring Data JPA过滤数据的另一种API

这就是我滚动的方式2014年3月23日在春天mvc | 规格 | 春季资料 | jpa | 参数解析器 | java | 搜索 | 搜索 | 滤波 Spring MVC&Spring Data JPA过滤数据的另一种API 更新 自从我写这篇文章以来已经有一段时间了.我仍然认为它值得阅读,但请务必检查Github页面,因为所描述的库已经发展,并已成为Maven Central中的一个完整的开源项目. 我坚信,一个卓越的框架最终会成为一种(领域特定的)语言. 我已经使用了Spring MVC好几年

Spring Data JPA(官方文档翻译)

关于本书 介绍 关于这本指南 第一章 前言 第二章 新增及注意点 第三章 项目依赖 第四章 使用Spring Data Repositories 4.1 核心概念 4.2 查询方法 4.3 定义repository的接口 4.4 定义查询方法 4.5. 创建repository实例 Spring Data JPA 参考指南 中文版 阅读地址: https://www.gitbook.com/book/ityouknow/spring-data-jpa-reference-documentatio

Spring Boot:整合Spring Data JPA

综合概述 JPA是Java Persistence API的简称,是一套Sun官方提出的Java持久化规范.其设计目标主要是为了简化现有的持久化开发工作和整合ORM技术,它为Java开发人员提供了一种ORM工具来管理Java应用中的关系数据. 简而言之,JPA提供了使用面向对象的方式操作数据库的功能.JPA充分吸收了现有Hibernate,TopLink,JDO等ORM框架的优势,具有易于使用.伸缩性强等优点. Spring Data JPA是Spring基于Spring Data框架对于JPA