Hibernate入門


Hibernate データの更新(Update)

2008/07/03 13:41Update
TAGS: Hibernate | 更新 | update

Syboos.jp編集長

Hibernateでは、Session.update(Object)メソッドを用いて、データの更新を行います。

データの更新例
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Expression;

/*
 * AppSuperDao: 親DAOクラス(定義の解説略)
 * UserMstDao:テーブル USER_MSTを操作するクラス
 */
public class UserMstDao extends AppSuperDao {
    /**
     * セッションを取得する(共通化すべきであるメソッド)
     * @return Session
     */
    private Session getSession() {
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session s = sessionFactory.openSession();
    
        return s;
    }
    
    /**
     * UserMstデータロード(プライマリキーで検索)
     * @param id 主キー。Serializable の型(String、Integer、Double、...)
     * @return 合致するUserMstデータ。
     */
    public UserMst get(String id) {
        return (UserMst)getSession().get(UserMst.class, id);
    }
    
    /**
     * UserMstをデータベースに更新する
     * @param userMst 更新対象オブジェクト
     */
    public void update(UserMst userMst) {
        getSession().update(userMst);
    }
}


Test用クラス
class Test {
    public static void main(String []args) {
        UserMstDao dao = new UserMstDao();
        
        //データベースからデータを取得
        UserMst userMst = dao.get("001");
        
        //データを再設定
        userMst.setName("新しい名前");
        
        //トランザクション開始(トランザクションの処理を共通化すべきである)
        Transaction transaction = dao.getSession().beginTransaction();
        
        try {
            //データ更新
            dao.update(userMst);
            //トランザクション・コミット
            transaction.commit();
        } catch (Exception e) {
            //エラーの場合、トランザクション・ロールバック
            transaction.rollback();
        }
    }
}

Sponsored Link