如何在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查詢提取?
- 使用Java8中的Optional類來消除程式碼中的null檢查JavaNull
- 使用 Java 8 Optional 的正確姿勢Java
- 為何在查詢中索引未被使用索引
- hibernate中hql查詢
- 如何在SpringBoot中使用Hibernate/JPA的@NaturalId?Spring Boot
- Java Optional使用的最佳實踐Java
- Java 8 之 OptionalJava
- 如何在 JavaScript 中使用媒體查詢JavaScript
- 使用mybatis example 和 java 8的特性來實現多表關聯且帶有查詢條件的查詢MyBatisJava
- 使用JPA和Hibernate延遲載入實體屬性的最佳方法 - Vlad Mihalcea
- Java8 Optional類Java
- java8-Optional APIJavaAPI
- hibernate(七) hibernate中查詢方式詳解
- 如何正確使用Java8的Optional機制Java
- JPA 連表查詢
- 使用Java Optional類的最佳實踐 - oracleJavaOracle
- JPA的多表複雜查詢
- Hibernate-ORM:13.Hibernate中的連線查詢ORM
- Hibernate 查詢
- 使用Java 8 Optional避免空指標異常Java指標
- SpringBoot JPA查詢對映到自定義實體類Spring Boot
- Java 8 新特性---Optional類Java
- hibernate的查詢快取和二級快取的配合使用快取
- Hibernate實現分頁查詢的原理
- Hibernate通常是三種:hql查詢,QBC查詢和QBE查詢:
- 講講Java8的Optional類Java
- Spring Data JPA + QueryDSL實現CRUD和複雜查詢案例Spring
- JPA使用Specification pattern 進行資料查詢
- Java 中如何使用 SQL 查詢 TXTJavaSQL
- Spring Data JPA 實現聯表查詢Spring
- spring data JPA 模糊查詢 --- 使用 LIKE --- 的寫法Spring
- jpa一對多查詢
- JPA時間段查詢
- spring data jpa查詢Spring
- JPA多表關聯查詢
- Hibernate查詢方式
- Hibernate——Query查詢