昨天初步了解了 Hibernate 的基礎概念,今天來探討 API 使用方法。
在 Hibernate 中,最重要的兩個物件就是 SessionFactory 和 Session。
Session。初始化的時候會讀取 hibernate 的 configuration,並提供與資料庫的連線,獲得 Session 物件。openSession():打開新的 Session。getCurrentSession():獲取當前的 Session。beginTransaction():開始一個新的 transaction。save():儲存物件到資料庫。update():更新物件。get(), load():從資料庫讀取物件。buildSessionFactory():建立 SessionFactory 物件。commit():提交 transactionrollback():回滾 transaction以下是透過 Session 進行 CRUD 操作的基本範例:
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
User user = new User("Meow", "meowmeow@example.com");
session.save(user);
transaction.commit();
session.close();
Session session = sessionFactory.openSession();
User user = session.get(User.class, 1L);  // 1L 是 User 的 id
session.close();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
User user = session.get(User.class, 1L);
user.setName("MeowMeow");
session.update(user);
transaction.commit();
session.close();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
User user = session.get(User.class, 1L);
session.delete(user);
transaction.commit();
session.close();
Hibernate 提供了 HQL (Hibernate Query Language) 和 Criteria API 來進行 SQL 語句查詢:
Session session = sessionFactory.openSession();
Query query = session.createQuery("FROM User WHERE email = :email");
query.setParameter("email", "meow@example.com");
List<User> users = query.list();
session.close();
Session session = sessionFactory.openSession();
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<User> query = builder.createQuery(User.class);
Root<User> root = query.from(User.class);
query.select(root).where(builder.equal(root.get("email"), "meow@example.com"));
List<User> users = session.createQuery(query).getResultList();
session.close();
SessionFactory 是個耗用時間和資源的過程,所以通常只在應用程式啟動時建立一次,並重複使用。close 掉,以釋放資源。