`
IT阿狸
  • 浏览: 68111 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring-JPA,带一小例子

 
阅读更多

一、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

E276-JPA.zip

  • 大小: 54.7 KB
  • 大小: 47.8 KB
  • 大小: 30.6 KB
  • 大小: 36.7 KB
  • 大小: 4.1 KB
  • 大小: 35.5 KB
  • 大小: 41.3 KB
分享到:
评论

相关推荐

    spring-data-jpa-extra:带有模板动态查询的spring数据jpa(例如

    spring-data-jpa-extra可以解决三个问题: 动态本地查询支持,例如mybatis 返回类型可以是任何东西没有代码,只有sql例子首先添加ComponentScan 通过java bean @ComponentScan ({ " com.slyak " , " your.base....

    spring-data-jpa-examples

    总结,"spring-data-jpa-examples" 项目为我们展示了如何利用 Spring Data JPA 进行数据访问,通过这个例子,我们可以学习到如何配置 JPA,创建 Entity,定义 Repository,以及如何在 Service 和 Controller 中使用...

    springMvc+spring+spring-data-jpa maven整合例子

    通过这个整合例子,我们可以看到 Spring MVC、Spring 和 Spring Data JPA 如何协同工作,构建出高效、易于维护的 Web 应用程序。理解并掌握这些技术,对于 Java 开发者来说至关重要,能够提升开发效率,降低项目的...

    spring data jpa 入门例子

    Spring Data JPA是Spring框架的一个模块,用于简化Java Persistence API(JPA)的使用,它提供了数据访问的抽象层,让开发者能够以更简洁的方式与数据库进行交互。本入门例子将帮助你理解并掌握Spring Data JPA的...

    Spring Boot中使用Spring-data-jpa的配置方法详解

    可以看到,使用 Spring-data-jpa 只需要编写一个简单的接口,就可以完成数据访问。这种方式可以大大减少数据访问层面的编程工作。 在使用 Spring-data-jpa 之前,需要在 pom.xml 文件中添加相关依赖,加入以下内容...

    基于maven集成spring5 hibernate5 spring-data-jpa2 H2的简单实例

    网上找不到这样的例子,只好我自已整理一份了。 该demo是基于maven集成spring5、hibernate5、spring-data-jpa2、H2的可以运行的最基本的main例子。 希望能对大家有帮助。

    SpringBoot利用Spring-Data-Jpa操作数据库

    Spring Data JPA是Spring框架的一个模块,主要用于简化Java持久层的开发,它提供了对JPA(Java Persistence API)的高级支持,让我们能够通过简单的注解驱动方式来操作数据库。 在SpringBoot项目中集成Spring Data ...

    Spring-data-jpa示例源码

    **Spring Data JPA** 是一个基于 **Java** 的框架,用于简化 **JPA (Java Persistence API)** 的使用,它是 **Spring Framework** 的一部分。Spring Data JPA 提供了一种声明式的方式来处理数据库交互,允许开发者以...

    Spring-Boot1.52 SpringSecurity4 Spring Data Jpa 整合例子

    本项目旨在通过一个具体的案例来演示如何将 Spring Boot 1.5.2、Spring Security 4 以及 Spring Data JPA 进行整合。这三个框架都是当前 Java Web 开发领域内非常流行的工具和技术,它们能够极大地提高开发效率,...

    spring-data-jpa-demo:一个关于Spring-data-JPA使用的demo,附带Spring Data JPA的一系列入门文章,详见http

    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 的一切「接地气...

    Spring集成JPA和MyBatis简单例子-20170622

    在IT行业中,Spring框架...在"Spring集成JPA和MyBatis简单例子-20170622"这个压缩包中,可能包含了示例代码,演示了如何在Spring项目中配置和使用这两种技术,这对于初学者理解和实践Spring的集成能力具有很大的帮助。

    springBoot+springjpa.docx

    Spring Data JPA 是 Spring Data 项目的一部分,它提供了对 Java Persistence API (JPA) 的增强支持,使得数据访问更加简单。 ##### 1. 添加依赖 在 `pom.xml` 中添加 Spring Data JPA 和 MySQL 驱动的依赖: ```...

    spring-data-jpa

    JPA对于单表的或者简单的SQL查询非常友好,甚至可以说非常智能。...甚至只要写findByName这样一个接口方法,他就能智能的帮你执行根据名称查找实体类对应的表数据,完全不用写SQL。 springboot jpa的简单实现

    Spring Data JPA 笔记

    Spring Data JPA 是一个强大的框架,它简化了Java应用程序与数据库之间的交互,是Spring生态中的重要组成部分。通过使用Spring Data JPA,开发者可以避免编写大量的JPA(Java Persistence API)和SQL代码,专注于...

    spring data jpa简单案例

    Spring Data JPA 是 Spring 框架的一个模块,它为使用 JPA(Java Persistence API)提供了强大的支持,简化了数据访问层的开发。通过使用 Spring Data JPA,我们可以避免编写大量重复的 CRUD(创建、读取、更新、...

    spring data jpa 例子

    这个"spring data jpa 例子"很可能是包含了一个示例项目,展示了如何在实际应用中集成并使用Spring Data JPA。让我们深入探讨Spring Data JPA的关键概念和用法。 首先,Spring Data JPA的目标是通过提供泛型 ...

    Spring集成JPA和MyBatis简单例子

    在提供的压缩包"springjpa"中,可能包含了实现上述集成的代码示例,包括Spring配置文件、实体类、Repository接口、Mapper接口及XML文件等。通过学习和分析这些示例,你可以更好地理解和实践Spring与JPA、MyBatis的...

    struts2+spring+jpa整合的完整例子(含分页)

    在学习jpa时候做的一个struts2+spring+jpa整合的完整例子 包含分页,一个简单的 资产入库系统 并实现了登陆等。

    使用SpringBoot-JPA进行自定义保存及批量保存功能

    使用SpringBoot-JPA进行自定义保存及批量保存功能是指在Spring Boot应用程序中使用JPA(Java Persistence API)来实现自定义的保存和批量保存功能。JPA是一个Java API,它提供了一种对象关系映射(ORM)机制,允许...

Global site tag (gtag.js) - Google Analytics