JPA-7 整合Spring
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相关推荐
- Spring Boot整合Spring Data JPA操作数据
一. Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 J ...
- springboot整合hibernate_峰哥说技术系列-17 .Spring Boot 整合 Spring Data JPA
今日份主题 Spring Boot 整合 Spring Data JPA JPA(Java Persistence API)是用于对象持久化的 API,是Java EE 5.0 平台标准的 ORM 规 ...
- springboot学习笔记(三)使用JDBC以及整合spring data jpa
spring boot JDBC的使用: 1.引入依赖 <dependency><groupId>mysql</groupId><artifactId> ...
- 第九章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 ...
- Spring整合Spring Data JPA——MySQL
1. MySQL下载和配置 进入官网:https://www.mysql.com/downloads/ 点击MySQL Community(GPL) Downloads 点击MySQL Communi ...
- SpringBoot简介、SpringBoot 入门程序搭建、与JDBC、Druid、Mybatis和SpringData JPA的整合
一.SpringBoot 简介: spring boot并不是一个全新的框架,它不是spring解决方案的一个替代品,而是spring的一个封装.所以,你以前可以用spring做的事情,现在用spri ...
- Spring Boot整合Spring Data Redis-整合步骤
如何通过SpringBoot去整合我们的Redis,这里我们先对SpringBoot Redis做一个简单的介绍,其实SpringBoot Redis,和我们之前讲的Spring JPA都是Sprin ...
- 第九篇:Spring Boot整合Spring Data JPA_入门试炼01
Spring Data JPA:介绍: Spring Data就是spring提供操作数据库的框架,而Spring Data JPA只是Spring Data框架下的一个基于JPA标准操作数据库的模块 ...
- ORM框架之Spring Data JPA(二)spring data jpa方式的基础增删改查
上一篇主要在介绍hibernate实现jpa规范,如何实现数据增删改查,这一篇将会着重spring data jpa 一.Spring Data JPA 1.1 Spring Data JPA介绍: ...
- Mongodb整合Spring示例
Mongodb整合Spring 参照Spring官方文档中Spring-data-mongodb对Mongodb的操作,做了一个简单的示例,以防遗忘. 文档地址:http://docs.spring. ...
最新文章
- 不同语言编译的程序入口总结
- c5a电池_手机锂电池基本性能科普和参数测试
- 四大数据库的比较(SQL Server、Oracle、Sybase和DB2)
- 转载:vscode gcc makefile git 配置入门
- TCP/IP协议的深入分析
- python之.py生成.exe可执行文件
- 数万字的0基础React知识大纲一定要藏藏好
- jQuery 页面载入进度条 (必有一款适合你----综合搜集版)
- 华为云媒体査勇:华为云在视频AI转码领域的技术实践
- CSS之颜色和背景的属性设置
- macOS 开发 - Move to Applications folder
- 吃桃子削不削皮 如何吃有保证
- MIT线性代数笔记一 行图像和列图像
- 基于Thinkphp5+EasyWeChat+fastadmin微信小程序授权登录获取手机号微信公众号网页---联合授权登录
- “集成电路”“国家安全学”正式成为一级学科!
- JavaWeb——JSP技术
- 子元素scroll父元素容器不跟随滚动JS实现
- Dr.Cleaner:清理磁盘和内存,深度卸载应用程序,监控CPU使用率和网络占用情况
- java 多态应用 编写 LOL商店英雄购买
- 美国纽约大学计算机专业排名,纽约大学计算机专业排名多少 让你快快乐乐的当一个程序猿...