Hibernate : Dynamic-update

In this section we will discuss how dynamicUpdate works in Hibernate.

Hibernate : Dynamic-update

Hibernate : Dynamic-update

In this section we will discuss how dynamicUpdate works in Hibernate.

Hibernate : Dynamic-update -

Hibernate allows you to use dynamic-update. It is optional and by default it is false.
When dynamic-update is true it means UPDATE SQL is generated at runtime and it contains those columns whose values have changed.
It tells Hibernate whether  to include unmodified properties in the SQL UPDATE statement. If you are using simple update then all value is set .

It is good to use dynamic-insert or dynamic-update where huge number of columns in a table and you want to set value in some of them.

You can use dynamic-update in two ways -by using annotation or in xml file.

Example : In this example we are using dynamic-update to update. You can use annotation to set dynamicUpdate=true in persistence class Student.

Here is your persistence class where table is mapped Student.java -

package net.roseindia.table;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="student")
@org.hibernate.annotations.Entity(
dynamicUpdate = true)
public class Student implements Serializable {

@Id
@GeneratedValue
@Column(name="roll_no")
private int roll;

@Column(name="name")
private String name;

@Column(name="course")
private String course;

public Student() {

}

public int getRoll() {
return roll;
}

public void setRoll(int roll) {
this.roll = roll;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getCourse() {
return course;
}

public void setCourse(String course) {
this.course = course;
}

}

Output :

Hibernate: select student0_.roll_no as roll1_0_0_, student0_.course as course0_0_, student0_.name as name0_0_ from student student0_ where student0_.roll_no=?
Hibernate: update student set course=? where roll_no=?
Update Successfully

For dynamic-update= false your output -

Hibernate: select student0_.roll_no as roll1_0_0_, student0_.course as course0_0_, student0_.name as name0_0_ from student student0_ where student0_.roll_no=?
Hibernate: update student set course=?, name=? where roll_no=?
Update Successfully

Click here to download complete source code