TIL

Today I Learned. 知ったこと、学んだことを書いていく

【Hibernate】NativeQuery.setProperties でパラメータのセットにPOJOを使う

hibernateSQL実行時のパラメータセットPOJOが使えたのが便利そうだからメモっておく

org.hibernate.query.NativeQuery.setProperties()を使うことでパラメータのセットにPOJOが使える

// Dao.java
@Override
public void insert(People people) {
    Session session = sessionFactory.getCurrentSession();
    NativeQuery query = session.createNativeQuery("insert into people (first_name, last_name, division_id) values (:firstName, :lastName, :divisionId)");
    query.setProperties(people);
    query.executeUpdate();
}
// People.java
@Data
public class People {
    private String firstName;
    private String lastName;
    private Integer divisionId;
}
//Service.java
@Override
@Transactional
public void insertUser() {
    People people = new People();
    people.setFirstName("taro");
    people.setLastName("yamada");
    peopleDao.insert(people);
}

:フィールド名としたら、自動でマッピングしてくれた

NULLが許可されているカラムに対応するフィールドがnullの場合、nullをINSERTしてくれた

 +-----------+------------+-----------+-------------+
 | person_id | first_name | last_name | division_id |
 +-----------+------------+-----------+-------------+
 | 1         | first      | last      | <null>      |
 +-----------+------------+-----------+-------------+

参考文献