Cascade is used when multiple objects in entities wants to be saved in a single shot.
For Example
session.save(objUserDetail1); session.save(objVeh1); session.save(objVeh2); session.save(objVeh3);
can be replaced by
session.persist(objUserDetail1);
UserDetails.java
@Entity @Table(name="USER_DETAIL") public class UserDetails { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int UserId; private String UserName; @OneToMany(cascade=CascadeType.PERSIST) private List<Vehicles> arrVehicles = new ArrayList<Vehicles>(); public List<Vehicles> getArrVehicles() { return arrVehicles; } public void setArrVehicles(List<Vehicles> arrVehicles) { this.arrVehicles = arrVehicles; } public int getUserId() { return UserId; } public void setUserId(int userId) { UserId = userId; } public String getUserName() { return UserName; } public void setUserName(String userName) { UserName = userName; } }
CreateTables.java
public static void main(String[] args) { UserDetails objUserDetail1 = new UserDetails(); objUserDetail1.setUserName("Mugil"); Vehicles objVeh1 = new Vehicles(); objVeh1.setVehicleName("Suzuki"); objUserDetail1.getArrVehicles().add(objVeh1); Vehicles objVeh2 = new Vehicles(); objVeh2.setVehicleName("Maruthi"); objUserDetail1.getArrVehicles().add(objVeh2); Vehicles objVeh3 = new Vehicles(); objVeh3.setVehicleName("Volkswagon"); objUserDetail1.getArrVehicles().add(objVeh3); SessionFactory sessionFact = createSessionFactory(); Session session = sessionFact.openSession(); session.beginTransaction(); session.persist(objUserDetail1); session.getTransaction().commit(); session.close(); }