关联关系在orm框架中是一个比较重要的一部分,在学习Hibernate框架的朋友可以重点的关注一下。关联关系通俗一点来说就是数据库表与表之间的关系(主外键关系),hibernare框架弱化了数据库表的一些操作,强化了实体类的操作,在hibernate中操作实体类就等同于操作数据库表。
它将数据库中的表映射成对应的对象,以对象的形式展现,这样我们就可以通过映射的对象来对数据库中的数据进行间接的操作。
关联映射是将数据库中的表映射成与之相对应的对象,当你对这个对象进行操作的时候,Hibernate会对数据库中对应的表执行相应的操作,你对该实体的操作实际上就是在间接的操作数据库中与之相对应的表。
关联的分类:关联可以分为一对一、一对多/多对一、多对多关联
一对多 : ,一对多是指一个对象对应多个对象 同样也分为单向关联和双向关联 如:一个教室可以有多个学生
1实现工具类
package com.lx.three.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
* 这个类是在学习hibernate的过程中使用 (整合ssh框架之前用)
* 作用:
* 可以用来检测所有的映射文件是否正确 90%
* @author lx
*
*/
public class SessionFactoryUtils {
private static SessionFactory sessionFactory;
static {
// 存放当前会话
Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
sessionFactory = cfg.buildSessionFactory();
}
public static Session openSession() {
Session session = sessionFactory.getCurrentSession();
if(session == null) {
session = sessionFactory.openSession();
}
return session;
}
public static void closeSession() {
Session session = sessionFactory.getCurrentSession();
if(session != null && session.isOpen()) {
session.close();
}
}
public static void main(String[] args) {
Session session = SessionFactoryUtils.openSession();
session.beginTransaction();
System.out.println(session.isConnected());
SessionFactoryUtils.closeSession();
System.out.println(session.isConnected());
}
}
为了方便我们把所有的方法都写在一起DemoDao
package com.lx.three.dao;
import java.util.List;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import com.lx.three.entity.Order;
import com.lx.three.entity.OrderItem;
import com.lx.three.util.SessionFactoryUtils;
public class DemoDao {
/**
* 为了测试关系型映射文件配置准确
* 讲解insert=false,update=false的用途
* @param order
* @return
*/
public Integer addOrder(Order order) {
Session session = SessionFactoryUtils.openSession();
Transaction transaction = session.beginTransaction();
Integer oid = (Integer)session.save(order);
transaction.commit();
session.close();
return oid;
}
public Integer addOrderItem(OrderItem orderItem) {
Session session = SessionFactoryUtils.openSession();
Transaction transaction = session.beginTransaction();
Integer otid = (Integer)session.save(orderItem);
transaction.commit();
session.close();
re