Spring 整合 Spring Data JPA ------ 大大降低持久层开发的工作量

Spring 整合 Spring Data JPA(重点)--------大大降低持久层开发的工作量


1、Spring Data JPA:Spring Data JPA 是 spring data 项目下的一个(子)模块。

2、提供了一套基于 JPA 标准操作数据库的简化方案。

3、底层默认的是依赖 Hibernate JPA 来实现的。

4、Spring Data JPA 的技术特点:我们只需要 定义接口 并继承 Spring Data JPA 中所提供的接口就可以了。不需要编写接口实现类。(即定义接口 + 继承 即可!)


1、创建一个 Spring Data JPA 项目 (03-spring-data-jpa)

2、导入jar包(省略)

3、新建 (src/applicationContext.xml)(加入 jpa 命名空间)(加上 Spring Data JPA 的配置)即可

<?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:aop="http://www.springframework.org/schema/aop" 								xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:jpa="http://www.springframework.org/schema/data/jpa"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd
	http://www.springframework.org/schema/aop
	http://www.springframework.org/schema/aop/spring-aop.xsd
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx.xsd
	http://www.springframework.org/schema/data/jpa 
	http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
	
	<!-- 配置读取 properties 文件的工具类 --> 
	<context:property-placeholder location="classpath:jdbc.properties"/> 
	
	<!-- 配置 c3p0 数据库连接池 --> 
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
		<property name="jdbcUrl" value="${jdbc.url}"/> 
		<property name="driverClass" value="${jdbc.driver.class}"/> 
		<property name="user" value="${jdbc.username}"/> 
		<property name="password" value="${jdbc.password}"/> 
	</bean> 
	
	<!-- Spring 整合Hibernate JPA 配置 EntityManagerFactory--> 
	<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
		<property name="dataSource" ref="dataSource"/> 
		<property name="jpaVendorAdapter"> 
			<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
				<!-- hibernate 相关的属性的注入 --> 
				<!-- 配置数据库类型 --> 
				<property name="database" value="MYSQL"/>
				<!-- 正向工程 自动创建表 --> 
				<property name="generateDdl" value="true"/> 
				<!-- 显示执行的 SQL --> 
				<property name="showSql" value="true"/> 
			</bean> 
		</property> 
		<!-- 扫描实体的包 --> 
		<property name="packagesToScan"> 
			<list> 
				<value>cn.yangdh.pojo</value>
		    </list> 
		</property> 
	</bean>
	
	<!-- 配置 Hibernate 的事务管理器 --> 
	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
		<property name="entityManagerFactory" ref="entityManagerFactory"/> 
	</bean>
	
	<!-- 配置开启注解事务处理 -->
	<tx:annotation-driven transaction-manager="transactionManager"/> 
	 
	<!-- 配置 springIOC 的注解扫描 --> 
	<context:component-scan base-package="cn.yangdh"/>
	
	
	<!-- Spring Data JPA 的配置 --> 
	<!-- base-package:扫描 dao 接口所在的包 --> 
	<jpa:repositories base-package="cn.yangdh.dao"/>
	
</beans>

4、编写 Dao (只要接口、不需要编写实现类)

package cn.yangdh.dao;

import org.springframework.data.jpa.repository.JpaRepository;

import cn.yangdh.pojo.Users;

//接口 UsersDao 继承 JpaRepository
//参数:(操作的实体是什么类型的:Users	实体中主键是什么类型的:Integer)
//JpaRepository 这个接口中定义了操作数据库的方法(CRUD)!!!
public interface UsersDao extends JpaRepository<Users, Integer>{
	
}

5、编写测试代码

package cn.yangdh.test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;

import cn.yangdh.dao.UsersDao;
import cn.yangdh.pojo.Users;

@RunWith(SpringJUnit4ClassRunner.class)//引入junit4插件工具
@ContextConfiguration("classpath:applicationContext.xml")//当前spring配置文件的位置和名称
public class UserDaoImplTest {

	@Autowired
	private UsersDao userDao;
	
	/*
	 *添加测试
	 */
	@Test
	@Transactional
	@Rollback(false)//取消自动回滚
	public void testInsertUsers() {
		
		Users u = new Users();
		u.setUsername("小艾");
		u.setUserage(23);
//		this.userDao.insertUsers(u);
		this.userDao.save(u);
	}
	
	/*
	 * 更新测试
	 */
	
	/*
	 * 查询测试、根据useid查询
	 */
	
	/*
	 * 删除用户测试
	 */
	
}

6、测试成功、大大简化 持久层 的开发工作。

结束线====

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值