2019年9月18日 星期三
以Hibernate設計進行DAO處理資料(未實做設計模式)
先前做過了JDBC的DAO(Data Access Object),現在要改以Hibernate實作DAO,該如何更改呢?
以建築物當例子,思考邏輯如下:
1. 先產生建構子,給定Session初始化。
2. 再寫getSession方法獲得session。
3. 後寫CRUD,注意CRUD方法的傳回型別是bean或是boolean。
eg.
public class BuildingDAO {
private Session session;
public BuildingDAO(Session session) {
this.session = session;
}
public Session getSession() {
return session;
}
// 新增
public BuildingBean insert(BuildingBean bean) {
// 以getSession().get取得傳入bean中的id並查詢(get方法)
BuildingBean building = getSession().get(BuildingBean.class, bean.getBuildingid());
// 如果結果為空值則新增並回傳
if (building == null) {
getSession().save(bean);
return bean;
}
// 如果已有資料則不新增
return null;
}
// 查詢單筆
public BuildingBean select(int buildingId) {
// 以getSession().get取得傳入bean中的id並查詢(get方法)
return getSession().get(BuildingBean.class, buildingId);
}
// 查詢全部
@SuppressWarnings("unchecked")
public List<BuildingBean> selectAll() {
// Query query = session.createQuery("from BuildingBean");
// return (List<BuildingBean>) query.list();
//以createQuery()取得多筆資料的動態陣列並強制轉型
return (List<BuildingBean>) session.createQuery("from BuildingBean").list();
}
// 修改
public BuildingBean update(int buildingId, String buildingName) {
// 以getSession().get取得傳入bean中的id並查詢(get方法)
BuildingBean building = getSession().get(BuildingBean.class, buildingId);
//如果結果有資料則更新名稱並回傳
if(building!=null) {
building.setBuildingname(buildingName);
return building;
}
//如果結果為空值則回傳null
return null;
}
//刪除
public boolean delete(int buildingId) {
// 以getSession().get取得傳入bean中的id並查詢(get方法)
BuildingBean building = getSession().get(BuildingBean.class, buildingId);
//如果結果有資料則刪除並回傳成功
if(building!=null) {
getSession().delete(building);
return true;
}
//如果沒資料則回傳失敗
return false;
}
}
以上,同行見笑,
如有任何指教請不吝留言告知,謝謝。
訂閱:
張貼留言 (Atom)
無暇的程式碼(Clean code)金句
The only valid measurement of code quality: WTFs/minute.
-
Java裡有個函數叫random: Math.random() 其範圍為:0.0 <= random < 1.0 如果需要一顆骰子,可以這麼寫:
-
先前做過了JDBC的DAO(Data Access Object),現在要改以Hibernate實作DAO,該如何更改呢?
沒有留言:
張貼留言