如何在Hibernate/JPA的實體和查詢中使用Java 8 Optional?
將Java 8 Optional視為處理所有的空值的“銀彈”可能會帶來更多弊大於利。合適它們是最好的方法。
本文的應用程式是在實體和查詢中如何正確使用Java 8 Optional的概念證明。
關鍵點:
- 使用Spring Data內建查詢方法返回Optional(例如findById())
- 編寫我們自己的查詢返回Optional
- 在實體getter使用Optional
- 為了執行不同的場景,檢查檔案:data-mysql.sql
原始碼可以在這裡找到 。
@Entity public class TennisPlayer implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name = "tournament_id") private Tournament tournament; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Optional<String> getName() { return Optional.ofNullable(name); } public void setName(String name) { this.name = name; } public Optional<Tournament> getTournament() { return Optional.ofNullable(tournament); } public void setTournament(Tournament tournament) { this.tournament = tournament; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof TennisPlayer)) { return false; } return id != null && id.equals(((TennisPlayer) obj).id); } @Override public int hashCode() { return 2018; } } |
@Repository public interface TennisPlayerRepository extends JpaRepository<TennisPlayer, Long> { @Transactional(readOnly=true) Optional<TennisPlayer> findByName(String name); } |
相關文章
- 如何使用Hibernate/JPA的JPQL/HQL查詢提取?
- Hibernate/JPA中@OneToOne和@MapsId的使用
- 如何在SpringBoot中使用Hibernate/JPA的@NaturalId?Spring Boot
- Hibernate/JPA中如何合併實體集合?
- 使用Java8中的Optional類來消除程式碼中的null檢查JavaNull
- hibernate中hql查詢
- 使用JPA和Hibernate延遲載入實體屬性的最佳方法 - Vlad Mihalcea
- Hibernate-ORM:13.Hibernate中的連線查詢ORM
- Hibernate 查詢
- 使用mybatis example 和 java 8的特性來實現多表關聯且帶有查詢條件的查詢MyBatisJava
- 391、Java框架46 -【Hibernate - 查詢HQL、查詢Criteria、查詢標準SQL】 2020.10.19Java框架SQL
- 如何在 JavaScript 中使用媒體查詢JavaScript
- Java Optional使用的最佳實踐Java
- SpringBoot JPA查詢對映到自定義實體類Spring Boot
- Java 8 之 OptionalJava
- 使用Hibernate、JPA、Lombok遇到的有趣問題Lombok
- hibernate查詢的方式 都有哪些
- hibernate的三種查詢方式
- JPA與hibernate-------JPA01
- Spring Data JPA + QueryDSL實現CRUD和複雜查詢案例Spring
- 如何正確使用Java8的Optional機制Java
- spring data JPA 模糊查詢 --- 使用 LIKE --- 的寫法Spring
- Java8 Optional類Java
- java8-Optional APIJavaAPI
- spring data jpa查詢Spring
- JPA 連表查詢
- Spring Data JPA 實現聯表查詢Spring
- JPA的多表複雜查詢
- 使用JPA和Hibernate呼叫儲存過程的最佳方法 - Vlad Mihalcea儲存過程
- 使用Java Optional類的最佳實踐 - oracleJavaOracle
- Hibernate查詢自動更新
- Hibernate/JPA中避免save()冗餘呼叫
- Java 中如何使用 SQL 查詢 TXTJavaSQL
- Spring Data JPA 實現多表關聯查詢Spring
- Java 8 新特性---Optional類Java
- Spring JPA 聯表查詢Spring
- JPA多表關聯查詢
- jpa一對多查詢