一、JPA简介:
JPA全称Java Persistence API。JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
二、这里用OpenJPA 2.0 和Spring 3.0作为例子
三、搭建Spring 和 JPA的框架步骤
1.搭建Spring3.0框架,然后Finish。
2.然后搭建JPA框架,这里选用OpenJPA2.0版本
Next
选上所链接的数据库,还有数据库驱动,这里用的是Oracle数据库。接着Finish
四、框架搭建完成后,映射实体类
1.当框架搭建完之后,会在src目录下发现一个新建的文件夹和文件
2.映射实体,选择JPA的反向工程
勾上以下选项,会自动生成接口类,实现类,和工具类。接着Next就行了,和Hibernate的差不多。
五、Spring的配置文件
<?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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd" xmlns:tx="http://www.springframework.org/schema/tx"> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> <property name="persistenceUnitName" value="E276-JPA" /> </bean> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean> <!-- dao --> <bean id="employeeDao" class="org.e276.dao.impl.EmployeeDAO"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean> <!-- 注解式事务的配置 --> <tx:annotation-driven transaction-manager="transactionManager" /> </beans>
七、测试类
package org.e276.test; import java.util.Date; import java.util.List; import org.e276.dao.IEmployeeDAO; import org.e276.entity.Department; import org.e276.entity.Employee; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { /** * @param args */ public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); // 注意这里的写法Spring 3.0不同 IEmployeeDAO employeeDao = context.getBean(IEmployeeDAO.class); // 查询所有的员工 List<Employee> employees = employeeDao.findAll(); for (Employee employee : employees) { System.out.println("姓名:" + employee.getName() + ",性别:" + employee.getSex()); } //添加新的员工 Employee employee = new Employee(null, new Department((short) 5), "小屁孩", true, 1438d, new Date()); employeeDao.save(employee); } }
八、又或者添加单元测试框架来测试
package org.e276.test; import java.util.Date; import java.util.List; import javax.persistence.EntityManager; import org.e276.entity.Department; import org.e276.entity.Employee; import org.e276.util.EntityManagerHelper; import org.junit.After; import org.junit.Before; import org.junit.Test; public class TestEmployee { // 得到EntityManager对象 EntityManager manager = null; @Before public void setUp() throws Exception { manager = EntityManagerHelper.getEntityManager(); // 开始事务 EntityManagerHelper.beginTransaction(); } @After public void tearDown() throws Exception { // 提交事务 EntityManagerHelper.commit(); EntityManagerHelper.closeEntityManager(); } public void saveEmployee() { Department department = new Department((short) 2); // 因为主键是通过序列产生,所以一定要设置成null Employee employee = new Employee(null, department, "李培翔", true, 4500d, new Date()); manager.persist(employee); System.out.println(employee.getName() + "添加成功!"); } public void findEmployee() { Employee employee = manager.find(Employee.class, 1004); System.out.println("找到一只小伙伴:" + employee.getName()); } public void deleteEmployee() { Employee employee = manager.find(Employee.class, 1005); manager.remove(employee); System.out.println("含泪忍痛删掉一小伙伴,他名字是:" + employee.getName()); } public void updateEmployee() { Employee employee = manager.find(Employee.class, 1); employee.setSalary(15000d); manager.merge(employee); } /** * 查询某部门的员工人数 */ public void findDepartmentCount() { // JPA-QL不支持*号 Long count = (Long) manager .createQuery("select count(e) from Employee e where e.department.name=:name") .setParameter("name", "生产部").getSingleResult(); System.out.println("生产部的人数是:" + count); } /** * 查询某个部门的所有员工 */ @Test @SuppressWarnings("unchecked") public void findEmployeeByDepartment() { List<Employee> list = manager .createQuery("select e from Employee e where e.department.name=:name") .setParameter("name", "生产部").getResultList(); for (Employee employee : list) { System.out.println(employee.getName() + "工资:" + employee.getSalary()); } } }
九、demo
相关推荐
spring-data-jpa-extra可以解决三个问题: 动态本地查询支持,例如mybatis 返回类型可以是任何东西没有代码,只有sql例子首先添加ComponentScan 通过java bean @ComponentScan ({ " com.slyak " , " your.base....
总结,"spring-data-jpa-examples" 项目为我们展示了如何利用 Spring Data JPA 进行数据访问,通过这个例子,我们可以学习到如何配置 JPA,创建 Entity,定义 Repository,以及如何在 Service 和 Controller 中使用...
通过这个整合例子,我们可以看到 Spring MVC、Spring 和 Spring Data JPA 如何协同工作,构建出高效、易于维护的 Web 应用程序。理解并掌握这些技术,对于 Java 开发者来说至关重要,能够提升开发效率,降低项目的...
Spring Data JPA是Spring框架的一个模块,用于简化Java Persistence API(JPA)的使用,它提供了数据访问的抽象层,让开发者能够以更简洁的方式与数据库进行交互。本入门例子将帮助你理解并掌握Spring Data JPA的...
可以看到,使用 Spring-data-jpa 只需要编写一个简单的接口,就可以完成数据访问。这种方式可以大大减少数据访问层面的编程工作。 在使用 Spring-data-jpa 之前,需要在 pom.xml 文件中添加相关依赖,加入以下内容...
网上找不到这样的例子,只好我自已整理一份了。 该demo是基于maven集成spring5、hibernate5、spring-data-jpa2、H2的可以运行的最基本的main例子。 希望能对大家有帮助。
Spring Data JPA是Spring框架的一个模块,主要用于简化Java持久层的开发,它提供了对JPA(Java Persistence API)的高级支持,让我们能够通过简单的注解驱动方式来操作数据库。 在SpringBoot项目中集成Spring Data ...
**Spring Data JPA** 是一个基于 **Java** 的框架,用于简化 **JPA (Java Persistence API)** 的使用,它是 **Spring Framework** 的一部分。Spring Data JPA 提供了一种声明式的方式来处理数据库交互,允许开发者以...
本项目旨在通过一个具体的案例来演示如何将 Spring Boot 1.5.2、Spring Security 4 以及 Spring Data JPA 进行整合。这三个框架都是当前 Java Web 开发领域内非常流行的工具和技术,它们能够极大地提高开发效率,...
spring-data-jpa-demo一个关于Spring-data-JPA使用的demo1、2、3、4、5、6、7、8、9、9.1、例子 10、11、12、13、请通过社区SpringForAll()获取文章更新Spring For All 是什么「文艺版」关于Spring 的一切「接地气...
在IT行业中,Spring框架...在"Spring集成JPA和MyBatis简单例子-20170622"这个压缩包中,可能包含了示例代码,演示了如何在Spring项目中配置和使用这两种技术,这对于初学者理解和实践Spring的集成能力具有很大的帮助。
Spring Data JPA 是 Spring Data 项目的一部分,它提供了对 Java Persistence API (JPA) 的增强支持,使得数据访问更加简单。 ##### 1. 添加依赖 在 `pom.xml` 中添加 Spring Data JPA 和 MySQL 驱动的依赖: ```...
JPA对于单表的或者简单的SQL查询非常友好,甚至可以说非常智能。...甚至只要写findByName这样一个接口方法,他就能智能的帮你执行根据名称查找实体类对应的表数据,完全不用写SQL。 springboot jpa的简单实现
Spring Data JPA 是一个强大的框架,它简化了Java应用程序与数据库之间的交互,是Spring生态中的重要组成部分。通过使用Spring Data JPA,开发者可以避免编写大量的JPA(Java Persistence API)和SQL代码,专注于...
Spring Data JPA 是 Spring 框架的一个模块,它为使用 JPA(Java Persistence API)提供了强大的支持,简化了数据访问层的开发。通过使用 Spring Data JPA,我们可以避免编写大量重复的 CRUD(创建、读取、更新、...
这个"spring data jpa 例子"很可能是包含了一个示例项目,展示了如何在实际应用中集成并使用Spring Data JPA。让我们深入探讨Spring Data JPA的关键概念和用法。 首先,Spring Data JPA的目标是通过提供泛型 ...
在提供的压缩包"springjpa"中,可能包含了实现上述集成的代码示例,包括Spring配置文件、实体类、Repository接口、Mapper接口及XML文件等。通过学习和分析这些示例,你可以更好地理解和实践Spring与JPA、MyBatis的...
在学习jpa时候做的一个struts2+spring+jpa整合的完整例子 包含分页,一个简单的 资产入库系统 并实现了登陆等。
使用SpringBoot-JPA进行自定义保存及批量保存功能是指在Spring Boot应用程序中使用JPA(Java Persistence API)来实现自定义的保存和批量保存功能。JPA是一个Java API,它提供了一种对象关系映射(ORM)机制,允许...