Repository、CrudRepository和PagingAndSortingRepository接口操作关系型数据库

目录

Spring Data JPA介绍

SpringDataJPA的三个重要接口

Repository接口

CrudRepository接口

PagingAndSortingRepository接口

SpringDataJPA事务运用

SpringData连接Mysql数据库的配置

SpringDataJPA框架相关依赖包


Spring Data JPA介绍

Spring Data JPA是一个数据访问框架,它实现了Sun提供的实体映射规范,底层仍然用了Hibernate的实体映射组件。而Spring Data JDBC基于JDBC技术操作数据库

 

SpringDataJPA的三个重要接口

 

Repository接口

  1. org.springframework.data.repository.Repository<Stu, Integer>
  2. 在该接口的实现接口声明方法签名来实现对实体的管理,这些方法的名称是基于约定,SpringData将会按照约定操作表。调用程序直接调用方法签名,传入实参,就可以完成对实体的操作
  3. 查询以findBy开头,后跟查询条件,多个查询条件之间可以通过and或or连接

 

4. 新增和修改操作实体,调用方法

void save(T t)

Iterable<Stu> save(Iterable<T> entities);

5. 删除实体调用方法

void delete(int id);

void delete(T t);

void delete(Iterable<T> entities);

void deleteAll();

6. 在数据库访问层(Dao层)中,@Query与@Modifying这两个注解一起声明,定义个性化更新和删除操作

 

7.若过滤条件太多,实体类属性标志符太长,那么声明的方法签名太长。对于这种情况可以使用@Query注解完成对实体的操作,

这时方法名可按语义简短命名。例如:

 

8.若Query注解中加入nativeQuery=true,表示JPA直接对表操作,不操作实体类

 

CrudRepository接口

  1. org.springframework.data.repository.CrudRepository<T, ID>
  2. 调用方直接调用CrudRepository接口中的方法签名,实现对实体的操作

3.CrudRepository接口的实现子接口中,按照Repository接口的方法命名约定,实现对实体的操作。

因为CrudRepository继承了Repository接口

PagingAndSortingRepository接口

  1. org.springframework.data.repository.PagingAndSortingRepository<T, ID>
  2. PagingAndSortingRepository接口的实现子接口,可以继承CrudRepository和Repository的接口,提供给调用方使用
  3. PagingAndSortingRepository接口的实现子接口,可以按照Repository方法命名约定操作实体对象
  4. PagingAndSortingRepository接口支持分页和排序

 

 

SpringDataJPA事务运用

@Service注解 和 @Transactional 注解,来表示一个接口采用了事务机制

SpringData连接Mysql数据库的配置

<?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"
       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/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!--1 配置数据源-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
        <property name="url" value="jdbc:mysql://yangjjhost02:3306/tts"/>
    </bean>

    <!--2 配置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"/>
        </property>
        <property name="packagesToScan" value="com.home.tts"/>
        <property name="jpaProperties">
            <props>
                <!-- 命名策略 -->
                <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
                <!-- 标准SQL之外,数据库厂商提供的语法,称之为数据库方言 -->
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
                <!-- 是否显示sql -->
                <prop key="hibernate.show_sql">true</prop>
                <!-- 是否要格式化sql -->
                <prop key="hibernate.format_sql">true</prop>
                <!-- 是否要自动创建表 -->
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
    </bean>

    <!--3 配置事务管理器-->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>

    <!--4 配置支持注解的事务-->
    <tx:annotation-driven transaction-manager="transactionManager"/>

    <!--5 配置spring data-->
    <jpa:repositories base-package="com.home.tts" entity-manager-factory-ref="entityManagerFactory"/>

	<!--6 配置SpringBean管理自动扫描的包 -->
    <context:component-scan base-package="com.home.tts"/>
</beans>

SpringDataJPA框架相关依赖包

<!-- mySql数据库驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.38</version>
		</dependency>
		<!-- Spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>4.3.5.RELEASE</version>
		</dependency>
		<!-- SpringData JDBC -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>4.3.5.RELEASE</version>
		</dependency>
		<!--SpringData Jpa -->
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-jpa</artifactId>
			<version>1.8.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-entitymanager</artifactId>
			<version>4.3.6.Final</version>
		</dependency>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值