介绍一下hibernate的工作原理、优点以及如何优化?
解答:
工作原理:
1)启动Hibernate 构建Configuration实例,初始化该实例中的所有变量 Configuration cfg = new Configuration().configure();
2).加载hibernate.cfg.xml文件至该实例内存,通过hibernate.cfg.xml文件中的mapping节点配置,加载hbm.xml文件至该实例内存
3).由上面得到的Configuration实例构建一个SessionFactory实例 SessionFactory sf = cfg.buildSessionFactory();
4).由上面得到的SessionFactory实例创建连接 Session s = sf.openSession();
5).由上面得到的Session实例创建事务操作接口Transaction的一个实例tx Transaction tx = s.beginTransaction();
6).通过Session接口提供的各种方法操作数据库的访问
7).提交数据库的操作结果 tx.commit();
8).关闭Session链接 s.close();
优点:
1).对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2).Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3).hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4).hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
优化:
1).使用双向一对多关联,不使用单向一对多
2).灵活使用单向一对多关联
3).不用一对一,用多对一取代
4).配置对象缓存,不使用集合缓存
5).一对多集合使用Bag,多对多集合使用Set
6).继承类使用显式多态
7).表字段要少,表关联不要怕多,可以利用二级缓存
解答:
工作原理:
1)启动Hibernate 构建Configuration实例,初始化该实例中的所有变量 Configuration cfg = new Configuration().configure();
2).加载hibernate.cfg.xml文件至该实例内存,通过hibernate.cfg.xml文件中的mapping节点配置,加载hbm.xml文件至该实例内存
3).由上面得到的Configuration实例构建一个SessionFactory实例 SessionFactory sf = cfg.buildSessionFactory();
4).由上面得到的SessionFactory实例创建连接 Session s = sf.openSession();
5).由上面得到的Session实例创建事务操作接口Transaction的一个实例tx Transaction tx = s.beginTransaction();
6).通过Session接口提供的各种方法操作数据库的访问
7).提交数据库的操作结果 tx.commit();
8).关闭Session链接 s.close();
优点:
1).对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2).Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3).hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4).hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
优化:
1).使用双向一对多关联,不使用单向一对多
2).灵活使用单向一对多关联
3).不用一对一,用多对一取代
4).配置对象缓存,不使用集合缓存
5).一对多集合使用Bag,多对多集合使用Set
6).继承类使用显式多态
7).表字段要少,表关联不要怕多,可以利用二级缓存