Tag: dao

Kotlin的DAO应该返回Optional还是null?

在Kotlin / JPA之前,我曾经写过这样的DAO层: public interface UserDao extends JpaRepository { Optional findBySsn(String ssn); } 而在来电方,如果我想通过SSN找人或创建用户,我可以这样写: val user = userDao.findBySsn(value).orElseGet { userDao.save(value) } 它运作良好,看起来流利。 但是,由于Kotlin引入了无效安全,所以还有另外一种惯用的方式(Java中的dao): public interface UserDao extends JpaRepository { Optional findBySsn(String ssn); @Query(“select u from User u where u.ssn = :ssn”) @Nullable User findBySsnNullable(@Param(“ssn”) String ssn) } 而在客户端: val user = userDao.findBySsnNullable(value) .takeIf{ it -> […]