Spring整合JPA的具体实现代码下载地址:http://download.csdn.net/download/bingbeichen/9808227。


1. 具体实现

  ①. 新建java工程,并在工程目录下新建lib目录

  ②. 加入Spring、Hibernate、JPA、C3P0和MySQL数据库驱动所依赖的jar包
   添加Spring所依赖的jar包到lib目录中;
   添加hibernate-release-4.2.4.Final\lib\required*.jar到lib目录中;
   添加hibernate-release-4.2.4.Final\lib\jpa*.jar到lib目录中;
   添加hibernate-release-4.2.4.Final\lib\optional\c3p0*.jar到lib目录中;
   添加mysql-connector-java-5.1.7\mysql-connector-java-5.1.7-bin.jar到lib目录中。
   

  ③. 创建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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"><!-- 配置自动扫描的包 --><context:component-scan base-package="com.qiaobc.jpa"></context:component-scan><!-- 配置C3P0数据源 --><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="driverClass" value="${jdbc.driverClass}"></property><property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property><!-- 配置其他属性 --></bean><!-- 整合目标一:配置EntityManagerFactory --><bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><property name="dataSource" ref="dataSource"></property><!-- 配置JPA提供商的适配器  通过内部bean的方式来配置 --><property name="jpaVendorAdapter"><bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean></property><!-- 配置实体类所在的包 --><property name="packagesToScan" value="com.qiaobc.jpa.spring.entities"></property><!-- 配置JPA的基本属性:如JPA实现产品的基本属性 --><property name="jpaProperties"><props><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop></props></property></bean><!-- 整合目标二:配置JPA使用的事务管理器 --><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="entityManagerFactory"></property></bean><!-- 配置支持注解的事务配置 --><tx:annotation-driven transaction-manager="transactionManager"/></beans>

  ④. 创建实体类

package com.qiaobc.jpa.spring.entities;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 name;private String email;private Integer age;@Column(name="ID")@GeneratedValue@Idpublic Integer getId() {return id;}public void setId(Integer id) {this.id = id;}@Column(name="LAST_NAME")public String getName() {return name;}public void setName(String name) {this.name = name;}@Column(name="EMAIL")public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Column(name="AGE")public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Person(Integer id, String name, String email, Integer age) {super();this.id = id;this.name = name;this.email = email;this.age = age;}public Person() {super();}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + ", email=" + email+ ", age=" + age + "]";}}

  ⑤. 创建PersonDao和PersonService,并在Spring配置文件中配置自动扫描的包

package com.qiaobc.jpa.dao;import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;import org.springframework.stereotype.Repository;import com.qiaobc.jpa.spring.entities.Person;@Repository
public class PersonDao {// 如何获取到和当前事务关联的EntityManager对象呢?// 通过@PersistenceContext注解来标记EntityManager成员变量@PersistenceContextprivate EntityManager entityManager;public void save(Person person) {entityManager.persist(person);}}
package com.qiaobc.jpa.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import com.qiaobc.jpa.dao.PersonDao;
import com.qiaobc.jpa.spring.entities.Person;@Service
public class PersonService {@Autowiredprivate PersonDao personDao;@Transactionalpublic void savePersons(Person person1, Person person2) {personDao.save(person1);
//      int result = 10 / 0;personDao.save(person2);}}

  ⑥. 测试环境配置是否成功

package com.qiaobc.jpa.spring;import javax.sql.DataSource;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.qiaobc.jpa.service.PersonService;
import com.qiaobc.jpa.spring.entities.Person;public class JPASpringTest {private ApplicationContext ctx = null;private PersonService personService = null;{ctx = new ClassPathXmlApplicationContext("applicationContext.xml");personService = ctx.getBean(PersonService.class);}@Testpublic void testDataSource() throws Exception {DataSource dataSource = (DataSource) ctx.getBean("dataSource");// 验证数据源是否配置成功,配置成功会输出如下代理对象// com.mchange.v2.c3p0.impl.NewProxyConnection@1103e5d9System.out.println(dataSource.getConnection());}@Testpublic void testPersonService() {Person person1 = new Person(null, "qiaobc", "qiaobc@163.com", 23);Person person2 = new Person(null, "qiaobb", "qiaobb@163.com", 23);// 验证EntityManager是否使用上Spring的声明式事务,若使用则输出代理对象// com.qiaobc.jpa.service.PersonService$$EnhancerByCGLIB$$8c049a52System.out.println(personService.getClass().getName());personService.savePersons(person1, person2);}}

2. 附录

  

<!-- 配置JPA提供者的适配器 -->
<bean id="jpaVendorAdapter"class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"><property name="databasePlatform"><bean class="com.atguigu.ssps.modules.persistence.Hibernates"factory-method="getDialect"><constructor-arg ref="dataSource"></constructor-arg></bean></property>
</bean>
<!-- 配置JPA的 EntityManager -->
<bean id="entityManagerFactory"class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="jpaVendorAdapter" ref="jpaVendorAdapter"></property><property name="packagesToScan" value="com.atuigu.crm"></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.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop></props></property>
</bean>

JPA-7 整合Spring相关推荐

  1. Spring Boot整合Spring Data JPA操作数据

    一. Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 J ...

  2. springboot整合hibernate_峰哥说技术系列-17 .Spring Boot 整合 Spring Data JPA

    今日份主题 Spring Boot 整合 Spring Data JPA JPA(Java Persistence API)是用于对象持久化的 API,是Java EE 5.0 平台标准的 ORM 规 ...

  3. springboot学习笔记(三)使用JDBC以及整合spring data jpa

    spring boot JDBC的使用: 1.引入依赖 <dependency><groupId>mysql</groupId><artifactId> ...

  4. 第九章SpringBoot整合Spring Data JPA

    目录 1 概述 2 Spring Data JPA整合 2.1 pom文件 2.2 配置文件 2.3 实体类 2.4 Dao接口 2.5 启动类 2.6 编写测试类 3 Spring Data JPA ...

  5. Spring整合Spring Data JPA——MySQL

    1. MySQL下载和配置 进入官网:https://www.mysql.com/downloads/ 点击MySQL Community(GPL) Downloads 点击MySQL Communi ...

  6. SpringBoot简介、SpringBoot 入门程序搭建、与JDBC、Druid、Mybatis和SpringData JPA的整合

    一.SpringBoot 简介: spring boot并不是一个全新的框架,它不是spring解决方案的一个替代品,而是spring的一个封装.所以,你以前可以用spring做的事情,现在用spri ...

  7. Spring Boot整合Spring Data Redis-整合步骤

    如何通过SpringBoot去整合我们的Redis,这里我们先对SpringBoot Redis做一个简单的介绍,其实SpringBoot Redis,和我们之前讲的Spring JPA都是Sprin ...

  8. 第九篇:Spring Boot整合Spring Data JPA_入门试炼01

    Spring Data JPA:介绍: Spring Data就是spring提供操作数据库的框架,而Spring Data JPA只是Spring Data框架下的一个基于JPA标准操作数据库的模块 ...

  9. ORM框架之Spring Data JPA(二)spring data jpa方式的基础增删改查

    上一篇主要在介绍hibernate实现jpa规范,如何实现数据增删改查,这一篇将会着重spring data jpa 一.Spring Data JPA 1.1 Spring Data JPA介绍: ...

  10. Mongodb整合Spring示例

    Mongodb整合Spring 参照Spring官方文档中Spring-data-mongodb对Mongodb的操作,做了一个简单的示例,以防遗忘. 文档地址:http://docs.spring. ...

最新文章

  1. 不同语言编译的程序入口总结
  2. c5a电池_手机锂电池基本性能科普和参数测试
  3. 四大数据库的比较(SQL Server、Oracle、Sybase和DB2)
  4. 转载:vscode gcc makefile git 配置入门
  5. TCP/IP协议的深入分析
  6. python之.py生成.exe可执行文件
  7. 数万字的0基础React知识大纲一定要藏藏好
  8. jQuery 页面载入进度条 (必有一款适合你----综合搜集版)
  9. 华为云媒体査勇:华为云在视频AI转码领域的技术实践
  10. CSS之颜色和背景的属性设置
  11. macOS 开发 - Move to Applications folder
  12. 吃桃子削不削皮 如何吃有保证
  13. MIT线性代数笔记一 行图像和列图像
  14. 基于Thinkphp5+EasyWeChat+fastadmin微信小程序授权登录获取手机号微信公众号网页---联合授权登录
  15. “集成电路”“国家安全学”正式成为一级学科!
  16. JavaWeb——JSP技术
  17. 子元素scroll父元素容器不跟随滚动JS实现
  18. Dr.Cleaner:清理磁盘和内存,深度卸载应用程序,监控CPU使用率和网络占用情况
  19. java 多态应用 编写 LOL商店英雄购买
  20. 美国纽约大学计算机专业排名,纽约大学计算机专业排名多少 让你快快乐乐的当一个程序猿...

热门文章

  1. (干货)淘宝中小商家该如何做好微信粉丝营销?
  2. EasyGBS视频平台添加重点摄像机收藏模块
  3. 测试-----QQ发送图片失败的原因有哪些
  4. 图解JS词法环境(Lexical environment)
  5. 银联“闪付”和“电子现金”介绍(QuickPass UPCash)
  6. MATLAB mux demux
  7. 基于Springboot实现漫画网站平台
  8. ChatGPT 不是终点:阿里不出,谁与争锋?
  9. Espressif-IDE中文汉化教程全网首发
  10. 《C++捷径教程》目录