Spring data jpa

spring 整合 JPAspring

在applicationContext.xml中配置鏈接池app

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.user}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

整合JPA配置dom

    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan" value="cn.itcast.bos.domain" />
        <property name="persistenceProvider">
            <bean class="org.hibernate.jpa.HibernatePersistenceProvider" />
        </property>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="generateDdl" value="true" />
                <property name="database" value="ORACLE" />
                <property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect" />
                <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" />
                <entry key="hibernate.cache.use_query_cache" value="false" />
            </map>
        </property>
    </bean>

配置JPA的事務管理器maven

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

配置註解事務ide

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

hibernate是JPA接口規範實現
  SessionFactory---JPA EntityManagerFactory
  Session---JPA EntityManagerfetch

 

SpringData 整合JPA 簡化DAOurl

maven座標:
      spring-data-jpaspa

配置applicationContext.xmlhibernate

xmlns:jpa="http://www.springframework.org/schema/data/jpa

http://www.springframework.org/schema/data/jpa 
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd

<!-- 整合spring data jpa -->
<jpa:repositories base-package="cn.itcast.bos.dao" />

基本使用:code

DAO接口編寫規則:

  Repository(空接口)
  CrudRepository(增刪改查)
  PagingAndSortingRepository(分頁和排序)
  jpaRepository(擴展增刪改查,批量操做)
  jpaSpecificationExecutor:用來作負責查詢的接口
  specification:是spring data JPA提供的一個查詢規範

經常使用的API

CrudRepository
save、delete、deteleAll、findAll、findOne、count

PagingAndSortingRepository
findAll(Sort) 基於排序的查詢、 findAll(Pageable) 基於分頁的查詢

Spring data Query  使用  實現條件查詢

第一種 根據方法命名規則自動生成

  基於一列查詢等值查詢 findBy 列名 例如: findByName(String name);
  基於一列模糊查詢 findBy 列名 Like 例如: findByNameLike(String name)
  基於兩列等值查詢 findBy 列名 And 列名 例如: findByUsernameAndPassword(Stringusername, String password )

第二種 不按命名規則寫的查詢方法,能夠配置@Query 綁定 JPAL 語句或者 SQL 語句

  

@Query(value="from User where name = ?")
public List<User> queryName(String name)

帶有條件  修改和刪除操做  如何解決

使用@Query 註解完成 , 搭配使用@Modifying 標記修改、刪除操做

@Query(value="update Standard set minLength = ?2 where id = ?1")
@Modifying
public void updateMinLength(Integer id,Integer minLength)
相關文章
相關標籤/搜索