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

Repository接口
- org.springframework.data.repository.Repository<Stu, Integer>
- 在该接口的实现接口中声明方法签名来实现对实体的管理,这些方法的名称是基于约定,SpringData将会按照约定操作表。调用程序直接调用方法签名,传入实参,就可以完成对实体的操作
- 查询以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接口
- org.springframework.data.repository.CrudRepository<T, ID>
- 调用方直接调用CrudRepository接口中的方法签名,实现对实体的操作

3.CrudRepository接口的实现子接口中,按照Repository接口的方法命名约定,实现对实体的操作。
因为CrudRepository继承了Repository接口
PagingAndSortingRepository接口
- org.springframework.data.repository.PagingAndSortingRepository<T, ID>
- PagingAndSortingRepository接口的实现子接口,可以继承CrudRepository和Repository的接口,提供给调用方使用
- PagingAndSortingRepository接口的实现子接口,可以按照Repository方法命名约定操作实体对象
- 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>
1744

被折叠的 条评论
为什么被折叠?



