一 思路分析
在Hibernate框架的开发中,session对象是最核心的技术,增、删、该都需要用到,在通过id查询的时候用到的也是session对象,但是当有复杂查询的时候用到的是Query或Criteria类,这三个类都是在同一个包写的,在hibernate包下
二 Query类和Cirteria类的介绍
1.HQL(hibernate Query Language)面向对象的查询语言,与sql不同,HQL中的对象名师区分大小写的, HQL中查的是对象而不是和表,并且支持多态;HQL主要通过Query来操作,Query的创建方式:
Query q = session.createQuery(hql);
l from Person
l from User user where user.name=:name
l from User user where user.name=:name and user.birthday < :birthday
2.Criteria
Criteria是一种比HQL更面向对象的查询方式;Criteria的创建方式:
Criteria crit = session.createCriteria(DomainClass.class);
简单属性条件如:criteria.add(Restrictions.eq(propertyName, value)),
criteria.add(Restrictions.eqProperty(propertyName,otherPropertyName))
三 代码分析
1.添加任何一个对象
public static void add(Object obj) {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtil.getSession();
tx = session.beginTransaction();// 开启事务
session.save(obj);// 没有更新数据库
tx.commit();// 执行提交事务的时候更新数据库
} finally {
// 使资源得到释放
if (session != null) {
session.close();
}
}
}
2.删除任何一个类中的文件
public static void delete(Object obj) {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtil.getSession();
tx = session.beginTransaction();// 开启事务
session.delete(obj);
// 删除之后为瞬时状态
tx.commit();
} finally {
// 使资源得到释放
if (session != null) {
session.close();
}
}
}
3.更新任何一个类中的对象
public static void update(Object obj) {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtil.getSession();
tx = session.beginTransaction();// 开启事务
session.update(obj);
tx.commit();
} finally {
// 使资源得到释放
if (session != null) {
session.close();
}
}
}