Hibernate 下实现数据的级联插入 (一)

2014-11-24 11:17:38 · 作者: · 浏览: 8

在上一篇文档中,主要讲了如何在myeclipse中部署一个Hibernate项目,在本文中主要实现数据的级联插入,下面模拟的场景是,用户有多个订单,在插入用户的时候,将用户的订单添加到订单表中。

下面是User 和 Order两个pojo类的代码


[java]
public class Order {

private int id;

private int whoid; // thi id of the order's User

private User user;


public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public int getWhoid() {
return whoid;
}

public void setWhoid(int whoid) {
this.whoid = whoid;
}



}

public class Order {

private int id;

private int whoid; // thi id of the order's User

private User user;


public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public int getWhoid() {
return whoid;
}

public void setWhoid(int whoid) {
this.whoid = whoid;
}



}
[java]
public class User {

private int id;

private String username;

private String password;

//这里需要注意的是使用集合必须使用Set,而不能用HashSet,否者在插入数据的时候会抛出一个参数不匹配异常
private Set orders;



public Set getOrders() {
return orders;
}

public void setOrders(Set orders) {
this.orders = orders;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}



}

public class User {

private int id;

private String username;

private String password;

//这里需要注意的是使用集合必须使用Set,而不能用HashSet,否者在插入数据的时候会抛出一个参数不匹配异常
private Set orders;

public Set getOrders() {
return orders;
}

public void setOrders(Set orders) {
this.orders = orders;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}



}
下面这个是UserDao,这个就没有什么好说的了


[java]
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.example.domain.User;

public class UserDao {

private Session session;

public UserDao(Session session )
{
this.session = session;
}

public void savaUser(User user)
{
Transaction tx = session.beginTransaction();

try
{
session.save(user);
tx.commit();
}
catch(Exception ex)
{
ex.printStackTrace();
tx.rollback();
}
}


}

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.example.domain.User;

public class UserDao {

private Session session;

public UserDao(Session session )
{
this.session = session;
}

public void savaUser(User user)
{
T