Hibernate部分更新セッションupdateの多様な使い方

1216 ワード

hibernateでupdateを使用すると、すべてのフィールドが更新されます.いくつかのフィールドを更新するだけで、4つの方法があります.
1.XMLでpropertyラベルupdate=「false」を設定します.nameという属性を変更せずに設定します.
 
または
Annotationで属性GETメソッドに@Column(updatable=false)を付ける
@Column(updatable=false)  
    public int getAge() {  
        return age;  
    }  

欠点:私たちの需要は絶えず変化して、私たちは毎回ある値が修正されないことを保証することができなくて、簡単に言えば、柔軟ではありません.
2.2つ目の方法・・XMLのdynamic-update=「true」を使って、dynamicはダイナミックな意味で具体的な操作はこのクリックを見てリンクを開くことができます.この方法は私が提唱しています
3.第三の方式:HQL文を使用する
public void updateState(CheckIn ch) {
Session session = this.getHibernateTemplate().getSessionFactory()
.openSession();
Transaction tx = session.beginTransaction();
String hql = "update CheckIn ch set ch.state = :state where ch.id= :id";
Query query = session.createQuery(hql);
query.setInteger("state", ch.getState());
query.setInteger("id", ch.getId());
query.executeUpdate();

tx.commit();
session.close();

}

特定の修正オブジェクトに基づいて修正できます.
欠点:私たちは時々プログラムにどれが空いているのか、どれが空いていないのかを自動的に判断させたいと思っています(私たちは修正するだけでいいです)
4.オブジェクトを取得し、set方式で値を割り当てる
idに基づいて修正するオブジェクトを取得し、setで修正する値を変更します.