hibernate的核心类和接口
Configuration 类
它的用处是:
1. 读取hibernate.cfg.xml
2. 管理对象关系映射文件 <mapping resource=””>
3. 加载hibernate 的驱动,url ,用户..
4. 管理hibernate配置信息
SessionFactory 接口(会话工厂)
1. 可以缓存sql语句和数据(称为session级缓存)!!
2. 是一个重量级的类,因此我们需要保证一个数据库,有一个SessionFactroy
session接口
它的主要功能和作用是:
1. Session一个实例代表与数据库的一次操作(当然一次操作可以是crud组合)
2. Session实例通过SessionFactory获取,用完需要关闭。
3. Session是线程不同步的(不安全),因此要保证在同一线程中使用,可以用getCurrentSessiong()。
4. Session可以看做是持久化管理器,它是与持久化操作相关的接口
query接口
通过query接口我们可以完成更加复杂的查询任务.
Sessionsession=HibernateUtil.getCurrentSession();
Transaction ts=null;
try {
ts=session.beginTransaction();
//获取query引用[这里 Employee不是表.而是domain类名]
//[where 后面的条件可以是类的属性名,也可以是表的字段,安照hibernate规定,我们还是应该使用类的属性名.]
Queryquery=session.createQuery("from Employee where namehsp='shunping'");
//通过list方法获取结果,这个list会自动的将封装成对应的domain对象
//所以我们jdbc进行二次封装的工作没有.
List<Employee>list=query.list();
for(Employee e: list){
System.out.println(e.getAaaid()+""+e.getHiredate());
}
ts.commit();
} catch (Exception e) {
if(ts!=null){
ts.rollback();
}
throw newRuntimeException(e.getMessage());
}finally{
//关闭session
if(session!=null&&session.isOpen()){
session.close();
}
criteria 接口
Sessionsession=HibernateUtil.getCurrentSession();
Transaction ts=null;
try {
ts=session.beginTransaction(
Criteriacri=session.createCriteria(Employee.class).
setMaxResults(2).addOrder(Order.desc("id"));
List<Employee>list=cri.list();
for(Employee e: list){
System.out.println(e.getAaaid());
}
ts.commit();
} catch (Exception e) {
if(ts!=null){
ts.rollback();
}
throw newRuntimeException(e.getMessage());
}finally{
//关闭session
if(session!=null&&session.isOpen()){
session.close();
}
}