zoukankan      html  css  js  c++  java
  • JPA 笔记

    JPA,Java Persistence API的简称,中文名为Java持久层API。

    JPA 是一种规范,它建立了实体类对象和数据库表之间的映射关系,并可以据此将实体对象持久化到数据库表中。

    Spring-data-jpa 是在JPA规范下提供的 Repository 层的实现。

    示例:

    @Query(value = "select ID,LON,LAT,WARN_AREA_ID,PHASE_ID,GRID_INDEXS,K_LON,K_LAT from INFO_RIVER_POINTS where phase_id = ?1", nativeQuery = true)
    List<InfoRiverPointsEntity> findByPhaseId(Integer phaseId);
    @Query(value = "select a.warnAreaId from InfoRiverPointsEntity a where a.warnAreaId LIKE :id")
    List<InfoRiverPointsEntity> findByCode(@Param("id")String id);

    也可以通过这种方式实现修改、删除和添加:

    @Modifying
    @Transactional @Query(
    "update Person set email = :email where lastName =:lastName") void updatePersonEmailByLastName(@Param("lastName")String lastName,@Param("email")String email);

    总结: 
    (1)可以通过自定义的 JPQL 完成 UPDATE 和 DELETE 操作。 注意: JPQL 不支持使用 INSERT; 
    (2)在 @Query 注解中编写 JPQL 语句, 但必须使用 @Modifying 进行修饰. 以通知 SpringData, 这是一个 UPDATE 或 DELETE 操作 
    (3)UPDATE 或 DELETE 操作需要使用事务,此时需要定义 Service 层,在 Service 层的方法上添加事务操作; 
    (4)默认情况下, SpringData 的每个方法上有事务, 但都是一个只读事务。 他们不能完成修改操作。
    (5)在 @Query 标签中,如果不使用 nativeQuery,则查询语言为 JPQL,用实体类查询,用实体类接收; 
    (6)在 @Query 标签中,如果 nativeQuery 为 true,则查询语言为原生 sql,如果不是 SELECT * ,则无法用实体类接收;
    (7)在调用 save 方法插入数据时,以实体类 List 的形式,对数据入库批量操作,比在循环中单个插入,对时间开销更小; 

  • 相关阅读:
    UDP——python网络编程笔记
    2018.7计划
    二叉树
    第7.5章:类——Cookbook笔记
    网络编程 Cookbook
    网络编程 csapp
    第5.5章 迭代器与生成器——CookBook笔记
    第3.5章 数据结构与算法——CookBook笔记
    关于排序
    关于搜索
  • 原文地址:https://www.cnblogs.com/unique1319/p/9014754.html
Copyright © 2011-2022 走看看