Spring Data JPA
来源:互联网 发布:centos安装tomcat 编辑:程序博客网 时间:2024/05/16 08:36
Commons - 提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化。
JPA - 简化创建 JPA 数据访问层和跨存储的持久层功能。
Spring Data JPA提供的接口
1:Repository:最顶层的接口,是一个空的接口,目的是为了统一所有Repository的类型,且能让组件扫描的时候自动识别。
2:CrudRepository :是Repository的子接口,提供CRUD的功能。
3:PagingAndSortingRepository:是CrudRepository的子接口,添加分页和排序的功能。
4:JpaRepository:是PagingAndSortingRepository的子接口,增加了一些实用的功能,比如:批量操作等。
5:JpaSpecificationExecutor:用来做负责查询的接口。
6:Specification:是Spring Data JPA提供的一个查询规范,要做复杂的查询,只需围绕这个规范来设置查询条件即可。
实例-配置
pom.xml
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.2.1.Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version> </dependency> <!--spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.1.9.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>1.5.1.RELEASE</version> </dependency> </dependencies>
web.xml
<!-- Spring MVC核心控制器--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- Spring监听器--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 框架配置文件位置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext-*.xml</param-value> </context-param>
applicationContext-persistence.xml
<tx:annotation-driven /><context:component-scan base-package="com.dao" /><context:component-scan base-package="com.impl" /><bean id="jpa" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="packagesToScan" value="com.dto" /> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> </property> <property name="jpaProperties"> <props> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> <prop key="hibernate.ddl-auto">update</prop> </props> </property></bean><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="mysql" /> </bean><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="jpa" /></bean><bean id="persistenceExceptionTranslationPostProcessor"class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" /><jpa:repositories base-package="com.dao"entity-manager-factory-ref="jpa"transaction-manager-ref="transactionManager" />
Dao.java
public News readById(int id); @Query("select n from News n where n.title=?1")//HSQL public Iterable<News> searchByTitle(String title); @Query("select n from News n where n.content= :content")//HSQL public Iterable<News> searchByContent(@Param("content")String content); @Modifying @Query("update News n set n.title= :title where n.id= :id")//HSQL public int setTitle(@Param("id")int id,@Param("title")String title); @Modifying @Query("delete News n where n.content=?1")//HSQL public void deleteByContent(String content);
Test.java
@org.junit.Testpublic void save(){ News news = new News(); news.setTitle("This is a test news"); news.setContent("This is a test content."); news.setCreateDate(new Date()); newsService.save(news); }@org.junit.Testpublic void testlistAll(){ Iterable<News> newsList = newsService.listAll(); Iterator<News> newsIterator = newsList.iterator(); while(newsIterator.hasNext()){ News temp = newsIterator.next(); System.out.println(temp); }}@org.junit.Testpublic void testreadById(){ News newsIterable = newsService.readById(1);System.out.println(newsIterable.toString());}@org.junit.Testpublic void testdeleteById(){ newsService.deleteById(1);}@org.junit.Testpublic void testdeleteByContent(){ newsService.deleteByContent("This is");}@org.junit.Testpublic void testsetTitle(){ System.out.println(newsService.setTitle(1,"first"));}@org.junit.Testpublic void testHsql(){ Iterable<News> newsIterable = newsService.searchByTitle("This is a test news"); StringBuffer result = new StringBuffer(); Iterator<News> newsList = newsIterable.iterator(); while(newsList.hasNext()){ result.append(newsList.next().toString()+"\n"); } System.out.println(result.toString()); }@org.junit.Testpublic void test2Hsql(){ Iterable<News> newsIterable = newsService.searchByContent("This is"); StringBuffer result = new StringBuffer(); Iterator<News> newsList = newsIterable.iterator(); while(newsList.hasNext()){ result.append(newsList.next().toString()+"\n"); } System.out.println(result.toString());}@org.junit.Testpublic void testPage(){ Iterable<News> newsIterable = newsService.queryByPage(1); StringBuffer result = new StringBuffer(); Iterator<News> newsList = newsIterable.iterator(); while(newsList.hasNext()){ result.append(newsList.next().toString()+"\n"); } System.out.println(result.toString());}
实例-代码:
http://download.csdn.net/download/qq_30364013/9755735
0 0
- Jpa到Spring data jpa
- Spring Data JPA
- Spring-Data-Jpa
- Spring Data JPA
- Spring data jpa
- Spring Data JPA 使用
- Spring Data JPA
- Spring Data JPA
- spring data JPA 配置
- Spring Data JPA
- Spring Jpa Data
- spring-data-jpa 使用
- spring data jpa初试
- Spring Data jpa Repository
- spring data JPA 配置
- spring Data Jpa入门
- Spring Data JPA入门
- Spring Data JPA
- Java实例—数组的排序和搜索
- opencv中值滤波-双边滤波
- libevent源码深度剖析十
- PHP会话控制Session与Cookie
- map<char *, char *>的使用
- Spring Data JPA
- CSS 雪碧图
- 如何下载POI标注-信息点
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
- FFMPEG学习记录及总结
- 4.10、SSRS-通过时间段来进行查询
- libevent源码深度剖析十一
- 学习计划
- mysql5.7 版本在window下的安装