Hibernate增删改查
Hibernate中增删改查都是基于session对象的。所以所有操作之前都要获取session.
Session有两个形式,一种是注解形式的,一种是普通方式。
1.普通方式
publicclass HibernateUtil {
privatestatic String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
privatestaticfinal ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static Configuration configuration = newConfiguration();
}
2.注解方式
publicclass HibernateUtil {
privatestatic String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
privatestaticfinal ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static Configuration configuration = new AnnotationConfiguration();
}
HibernateUtil 类myeclipse自动生成即可
增
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();//开启事物
session.save(实体对象);
tx.commit();//提交事物
删
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
session.delete(实体对象);
tx.commit();
- 改
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
session.update(实体对象);
tx.commit();
查询
常用的查询有两种形式:
(1).hql查询
A.无参数的查询
Session session = HibernateUtil.getSession();
Query query = session.createQuery("from 实体类名");
List<实体类名> list=query.list();
B.带参数查询
Session session = HibernateUtil.getSession();
Query query = session.createQuery("from 实体类名 where 属性名=?");
query. setParameter (0,”属性的值”);
List<实体类名> list=query.list();
(2). Criteria查询
A.无参数的查询
Criteria criteria = session.createCriteria(实体名.class);
List<实体类名> list = criteria.list();
B.带参数查询
Criteria criteria = session.createCriteria(实体名.class);
criteria.add(Restrictions.eq(“属性名称”, “属性值”));
List<实体类名> list = criteria.list();
其中eq为等于除此之外还有like模糊查询,gt大于,lt小于等。
C.表连接查询
Criteria criteria = session.createCriteria(实体名1.class,”别名”);
criteria.createAlias("实体2属性名", "别名");
List<实体类名> list = criteria.list();
实体2属性名:是属性名字,就是实体1中关联的实体2的属性名,不是实体名