获取Session
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
public class HibernateSessionUtil {
private static SessionFactory sessionFactory;
static {
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure() //默认值:hibernate.cfg.xml
.build();
try {
sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory();
}
catch (Exception e) {
StandardServiceRegistryBuilder.destroy( registry );
}
}
public static Session createSession(){
return sessionFactory.openSession();
}
}
获取Query对象
session = HibernateSessionUtil.createSession();
//Query对象
Query query = session.createQuery("");
//NativeQuery对象
NativeQuery nativeQuery = session.createNativeQuery("");
NativeQuery对象方法
Query对象方法
//给占位符设置值
setParameter()
//将查询结果加入List集合中
list()
//查询单个结果
uniqueResult()
//执行更新或删除
executeUpdate()
hql
1 -- 查询并将查询结果注入到实体中
2 select t from PersonEntity as p;
3 -- 简写方式
4 from PersonEntity;
5
6 -- 带条件的查询
7 from PersonEntity where p_id=?;
8
9 -- 查询多列,注入到多个数组
10 -- [personId,personName]
11 select personId,personName from PersonEntity;
12
13 -- 使用DTO的构造器
14 select new com.dto.personDTO(personId,personName) from PersonEntity;
15
16 -- 使用map
17 select new map(personId,personName) form PersonEntity;
18
19 -- 连表查询
20 -- e.g. Person 和 Room
21 select new map(p.personId,r.roomName) from PersonEntity p left join p.roomList r where p.personName=?
22
23 -- 删除
24 delete from PersonEntity where personName=?
25
26 -- 修改
27 update PersonEntity set personName=? where personId=?