springMVC+hibernate+springdata+querydsl框架构建详解
来源:互联网 发布:淘宝卖家交流群 编辑:程序博客网 时间:2024/06/06 15:32
上一次的文章讲述了springdata的主要好处,其中一个好处就是他是spring家族的一大成员之一,所以可以和springMvc无缝结合,而且配置很简单,但是querydsl 却不是spring的产品,且拥有两个版本(com.querydsl和com.mysema.querydsl),springdata只支持com.querydsl版本所以导致配置会出现问题。现在让我们一步步把data配置进入我们以前的spring-hibernate框架中。
1.相关包的导入
1.1 springdata相关包
<!-- springdata --> <!--https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>1.10.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-releasetrain</artifactId> <version>Hopper-SR2</version> <scope>import</scope> <type>pom</type> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-commons --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-commons</artifactId> <version>1.12.2.RELEASE</version> </dependency> <!--/ springdata -->
1.2 querydsl相关包
<!-- querydsl --> <!-- https://mvnrepository.com/artifact/com.querydsl/querydsl-core --> <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-core</artifactId> <version>4.1.3</version> </dependency> <!-- https://mvnrepository.com/artifact/com.querydsl/querydsl-jpa --> <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-jpa</artifactId> <version>4.1.3</version> </dependency> <!-- https://mvnrepository.com/artifact/com.querydsl/querydsl-apt --> <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-apt</artifactId> <version>4.1.3</version> </dependency><!-- 注意和下面这些进行对比,作者以前就是用了面这些包,导致配了很久配不好,不要直接去maven仓库里面搜索querydsl<dependency> <groupId>com.mysema.querydsl</groupId> <artifactId>querydsl-apt</artifactId> <version>3.7.4</version> <scope>provided</scope></dependency> <dependency> <groupId>com.mysema.querydsl</groupId> <artifactId>querydsl-jpa</artifactId> <version>3.7.4</version></dependency> --><dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version></dependency> <!-- /querydsl -->
2 配置实体管理器
<!-- 对“实体管理器”解释:我们知道原生的jpa的配置信息是必须放在META-INF目录下面的,并且名字必须叫做persistence.xml,这个叫做persistence-unit,就叫做持久化单元,放在这下面我们感觉不方便,不好,于是Spring提供了org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean这样一个类,可以让你的随心所欲的起这个配置文件的名字,也可以随心所欲的修改这个文件的位置,只需要在这里指向这个位置就行。然而更加方便的做法是,直接把配置信息就写在这里更好,于是就有了这实体管理器这个bean。使用<property name="packagesToScan" value="your entity package" />这个属性来加载我们的entity。 --> <!-- 实体管理器 --> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource" /><!--数据源 --> <property name="packagesToScan" value="com.haizhi.bean" /><!-- 实体所在包 --> <property name="persistenceProvider"> <bean class="org.hibernate.ejb.HibernatePersistence" /> </property> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="generateDdl" value="false" /> <property name="database" value="MYSQL" /> <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> <property name="showSql" value="true" /> </bean> </property> <property name="jpaDialect"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> </property> <property name="jpaPropertyMap"> <map> <entry key="hibernate.query.substitutions" value="true 1, false 0" /> <entry key="hibernate.default_batch_fetch_size" value="16" /> <entry key="hibernate.max_fetch_depth" value="2" /> <entry key="hibernate.generate_statistics" value="true" /> <entry key="hibernate.bytecode.use_reflection_optimizer" value="true" /> <entry key="hibernate.cache.use_second_level_cache" value="false" /> <!-- 2016年8月15日更 这个一定要设置,提供懒加载功能,没有设置这个导致懒加载不了 --> <entry key="hibernate.enable_lazy_load_no_trans" value="true" /> <entry key="hibernate.cache.use_query_cache" value="false" /> </map> </property> </bean>
3 配置事务
<!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"><!-- 这里一定要用jpa事务去管理,不然存储方法无效,不能用hibernate事务了 --> <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean>
省略了声明式事务配置
4 配置repositories接口扫描标签
<jpa:repositories base-package="com.haizhi.dao" entity-manager-factory-ref="entityManagerFactory" transaction-manager-ref="transactionManager" />
5 配置querydsl 的 sql 代理类
5.1 引入代理类生成插件(注:该插件与上次说的热部署插件会有冲突,所以当你使用maven编译的时候不要同时引用)
<!-- 插件之间会起冲突 --><plugin> <groupId>com.mysema.maven</groupId><--这里如果使用com.query里面也有相应的生成插件--> <artifactId>apt-maven-plugin</artifactId> <version>1.0.9</version> <executions> <execution> <goals> <goal>process</goal> </goals> <configuration> <outputDirectory>target/generated-sources/java</outputDirectory> <processor>com.querydsl.apt.hibernate.HibernateAnnotationProcessor</processor> </configuration> </execution> </executions> </plugin>
5.2 使用maven clean
5.3 使用maven install
5.4 使用maven update
你就可以在你的maven项目里面的target文件夹里面发现一个叫generated-sources的文件夹,下面有一个java文件,里面对应的就是你的javabean对应生成的sql代理类
现在你就可以在你的项目里面使用querydsl了
对比实例
//使用querydsl// QTbUser qtbUser = QTbUser.tbUser;// Predicate p = qtbUser.userAccount.eq(userAccount).and(qtbUser.userPassword.eq(userPassword));// TbUser tbUser = userService.findByUserAccountAndUserPasswordUseQuerydsl(p); TbUser tbUser = userService.findByUserAccountAndUserPassword(userAccount,userPassword);
然后现在只需要新建dao包,然后使用该dao去继承他们就可以使用了
package com.haizhi.dao;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.querydsl.QueryDslPredicateExecutor;import com.haizhi.bean.TbAdmin;/** * @author jiangjintai * */public interface AdminDao extends JpaRepository<TbAdmin, Integer>, QueryDslPredicateExecutor<TbAdmin> {}
极大的提高了开发效率!
0 0
- springMVC+hibernate+springdata+querydsl框架构建详解
- springMVC+hibernate+springdata+querydsl搭建框架(优缺点分析+springdata介绍)
- Maven整合SpringMVC+Hibernate+SpringData框架开发
- springData使用QueryDsl
- 构建spring+springdata +jpa+springmvc项目
- Spring、SpringMVC、SpringData + JPA 整合详解
- Querydsl 手动构建Predicate
- Spring+SpringMVC+Hibernate+JPA+SpringData+Ehcache+C3p0+MySQL项目搭建
- Spring+SpringMVC+SpringData+JPA(Hibernate实现)无XML配置
- IDEA+gradle+spring+springMVC+hibernate+JPA+SpringData的web项目
- SpringData详解
- springmvc 框架构建过程
- SpringMVC+JPA+SpringData配置
- SpringMVC+JPA+SpringData配置
- springData+spring+springMVC整合
- maven构建hibernate框架
- Querydsl
- springmvc + hibernate构建web工程
- Ruby 连接MySQL数据库
- Android学习小记----监听电量的变化(不能静态注册的广播), 保持Service不被杀死的好方法
- CSS3中的animation详解
- C# Lambda表达式
- pdf文件怎么转换成word文档格式
- springMVC+hibernate+springdata+querydsl框架构建详解
- Java继承中的构造器实现
- mybatis学习详细动态sql语句示范
- Mathematica 11.0中的一些新特性
- 谈谈这一年来做项目的经历(1)
- AWT-2
- face++的开发包faceppsdk.jar 和httpclient.jar 冲突解决
- STL学习小结
- unity本地网络下载工具-HFS文件服务器教程