Java 8の新機能
- ラムダ式
- Stream API
- Date and Time API
- Optional
- デフォルトメソッド
これ全部 Doma 2 で使えます!
Doma とは?
- S2Daoから発展したDBアクセスライブラリ
- 2 way SQL
- 注釈処理
- 依存ライブラリ 0
- Doma 1 は Java 6 以上で動作
Doma 2 はDoma 1 を Java 8 に最適化
ラムダ式
TransactionManager tm = ...
tm.required(() -> {
Emp emp = dao.selectById(1);
emp.setAge(emp.getAge() + 1);
dao.update(emp);
});
Stream API
-
@Dao
public interface EmpDao {
@Select(strategy = SelectType.STREAM)
void selectAll(Function<Stream<Emp>, Void> mapper);
}
-
dao.selectAll(s -> s.map(this::convert)
.filter(this::isValid)
.forEach(this::println));
Date and Time API
@Entity
public class Emp {
private LocalDate hiredDate;
private LocalDateTime updatedAt;
...
}
Optional
@Dao
public interface EmpDao {
@Select
Optional<Emp> selectById(Integer id);
}
デフォルトメソッド
@Dao
public interface EmpDao {
default Optional<Emp> selectById(Integer id) {
Config config = Config.get(this);
DataSource ds = config.getDataSource();
...
}
}
Doma 2 情報
- ビルドツール: Gradle
- CI: Travis-CI (PostgreSQL, MySQL)