1. 使用Hibernate 导出数据库表
(ExportDB.java 工具类)
/**
* 使用hibernate导出数据库(由modle和hibernate配置文件生成数据库表),但要先有数据库
*/
package com.zoukang.usermgr.util;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class ExportDB {
public static void main(String[] args) {
// 读取hbiernate.cfg,xml文件
Configuration cfg = new Configuration().configure();
// 创建SchemaExport
SchemaExport export = new SchemaExport(cfg);
export.create(true, true);
}
}
2. 采用编程式异常:
1.getCurrensSession()和openSession()的区别?
*采用getCurrentSession()方法创建的session会绑定到当前线程中而
采用openSession()的方法创建的session不会绑定到当前线程中
*采用getCurrentSession()创建的session会在commint或rollback后自动关闭
而采用openSession()方法创建的session必须手动关闭
2.使用getCurrentSEssion(0必须在hibernate.cfg.xml文件中进行配置:
*如果采用的是本地事务(JDBC事务)
<property name="hibernate.current_session_cuntext_class">thread</property>
*如果采用的是全局事务(JTA事务)
<property name="hibernate.current_session_context_class">jta</property>
3.采用声明式事务:
a.声明式事务的配置
* 配置 SessionFactory
* 配置事务管理器
* 事务传播特性
* 哪些类哪些方法使用事务
b.编写业务逻辑方法
*
4。Hibernate自带的分页机制是什么?如果不使用Hibernate自带的分页,则采用什么方式分页?
1、hibernate自带的分页机制:获得Session对象后,从Session中获得Query对象。用Query.setFirstResult():设置要显示的第一行数据,
Query.setMaxResults():设置要显示的最后一行数据。
2、不使用hibernate自带的分页,可采用sql语句分页,
如:5:为每页显示的记录,2为当前页: select * top 5 from table where tabId not in (select tabId top (2-1)*5 from table);
5。Hibernate核心接口:
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。
·Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。
·SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
·Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
·Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
·Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。