Hibernate4详解(十二)

2014-11-24 10:41:08 · 作者: · 浏览: 26
load() {
SessionFactory sf = HibernateUtil.getSessionFactory();
Session session = sf.openSession();
// Transaction tx = session.getTransaction();
// tx.begin();
Customer customer = (Customer) session.load(Customer.class, 1);
// tx.commit();

Hibernate.initialize(customer);
session.close();
System.out.println(customer);

// 或者
// System.out.println(customer);
// session.close();
}
}

关联查询

Java代码
package org.springfuncs.associated;

import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.junit.Test;
import org.springfuncs.domain.Customer;
import org.springfuncs.domain.Order;
import org.springfuncs.util.HibernateUtil;

public class TestAssociated {

// 交叉连接(多表的笛卡儿积不常用)
// select c.*,o.* from customers c, orders o
@Test
public void test_cross_join() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
String hql = "from Customer c , Order o";
Query query = session.createQuery(hql);
List list = query.list();
for (int i = 0; i < list.size(); i++) {
Object[] obj = (Object[]) list.get(i);
Customer customer = (Customer) obj[0];
Order order = (Order) obj[1];
System.out.println((i + 1) + "---" + customer);
System.out.println((i + 1) + "---" + order);
}
session.close();
}

// 内链接
// select c.* from customers c inner join orders o on c.id=o.customer_id
// select o.* from orders o where o.customer_id=
@Test
public void test_inner_join() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
String hql = "select c from Customer c inner join c.orders"; // inner 可省略
Query query = session.createQuery(hql);
List list = query.list();
showCustomer(list);
session.close();
}

// 左外连接
// select c.* from customers c left outer join orders o on c.id=o.customer_id
// select o.* from orders o where o.customer_id=
@Test
public void test_left_outer_join() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
String hql = "select c from Customer c left outer join c.orders"; // outer 可省略
Query query = session.createQuery(hql);
List list = query.list();
showCustomer(list);
session.close();
}

// 右连接
// select c.*, o.* from customers c right outer join orders o on c.id=o.customer_id
@Test
public void test_right_outer_join() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
String hql = "from Customer c right outer join c.orders"; // outer 可省略
Query query = session.createQuery(hql);
List list = query.list();
for