Dao + h2 + JDBCでDB接続する
インメモリデータベースとは、非リレーショナルデータベースの一種です。データをディスクや SSD に保存するデータベースではなく、データストレージ用のメモリに主に依存します。インメモリデータベースは、ディスクにアクセスする必要性を除くことによって、最小限の応答時間を達成するよう設計されました。
https://makoo5.hatenablog.com/entry/2019/09/06/004605
全体像
的確ではないがこんな感じの認識
con → Service → [ Dao → jdbc ]→ db
必要なもの
事前準備
ライブラリの追加とymlファイルの設定
瞬間復習
Daoとは
- データ操作するためのインターフェース
- ビジネスロジック(サービスの責務)とデータ操作(daoの責務)を分離できる
jdbcとjpa
h2dbとは
- インメモリDB(サーバー再起動時に初期化)
- 後ほど
Entityの作成
データを保持するクラスを作成
Daoの作成
- データ操作とデータアクセスを担当します
- 単にSQLを実行するだけの DAO層
UserDao.java
public interface UserDao { void InsertUser(User user); List<User> getAll(); }
UserDaoImpl.java
@Repository // 1 DAO等のDBアクセスを行うクラスにつける public class UserDaoImpl implements UserDao{ // 2 Jdbcのテンプレート(DIで持ってこれる) private final JdbcTemplate jdbcTemplate; @Autowired public InquiryDaoImpl(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } @Override public void InsertUser(User user) { jdbcTemplate.update("INSERT INTO user(name, email, contents, created) VALUES(?,?,?,?)", user.getName(),user.getEmail(),user.getContents(),user.getCreated()); } }
Serviceの作成
@Service public class UserServiceImpl{ private final UserDao dao; @Autowired public UserServiceImpl(UserDao dao){ this.dao = dao; } public void save(User user) { dao.InsertIUser(user); } }
Controllerの記述
ServiceをDIして、それを介してデータ取得処理を記述
UserController.java
private final UserServiceImpl userService; @Autowired public UserController(UserServiceImpl userService){ this.userService = userService; } @PostMapping("/userSave") public String save() { // 登録していく処理 userService.save(//var); return "templete名"; }