在Hibernate中提供了三种常见的查询的方式,分别为:
- Hibernate自带的API接口查询
- HQL语言进行查询
- QBC(Query By Criteria)查询
通过Hibernate的自带的API接口进行查询
如使用get()方法通过id进行数据查询:
@Test
public void testQueryUserById(){
// TODO Auto-generated method stub
SessionFactory sf = null;
Session session = null;
Transaction ts = null;
try {
sf = HibernateUtil.getSessionFactory();
session = sf.getCurrentSession();
ts = session.beginTransaction();
ORMdemo orm=(ORMdemo)session.get(ORMdemo.class, 1);
//持久化
System.out.println("ID:"+orm.getId()+" Username:"+orm.getUsername()+" Password:"+orm.getPassword());
ts.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
if(ts != null)
{
ts.rollback();
}
e.printStackTrace();
}
}
再如通过save()方法实现数据的添加:
@Test
public void insertTest(){
// TODO Auto-generated method stub
SessionFactory sf = null;
Session session = null;
Transaction ts = null;
try {
sf = HibernateUtil.getSessionFactory();
session = sf.getCurrentSession();
ts = session.beginTransaction();
ORMdemo orm=new ORMdemo();
//持久化
orm.setUsername("wujinke");
orm.setPassword("wujinke");
session.save(orm);
ts.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
if(ts != null)
{
ts.rollback();
}
e.printStackTrace();
}
}
常见的方法如get()、load()、update()、delete()以及save()等。
使用QBC语句进行查询
如简单查询:
@Test
public void propertyQueryTest(){
// TODO Auto-generated method stub
SessionFactory sf = null;
Session session = null;
Transaction ts = null;
try {
sf = HibernateUtil.getSessionFactory();
session = sf.getCurrentSession();
ts = session.beginTransaction();
String hql="select u.username from ORMdemo as u";
Query query =session.createQuery(hql);
List<Object>list=query.list();
java.util.Iterator<Object> iter=list.iterator();
while(iter.hasNext()){
Object obj=(Object)iter.next();
System.out.println(obj);
}
ts.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
if(ts != null)
{
ts.rollback();
}
e.printStackTrace();
}
}
实例化查询:
@Test
public void objectQueryTest(){
// TODO Auto-generated method stub
SessionFactory sf = null;
Session session = null;
Transaction ts = null;
try {
sf = HibernateUtil.getSessionFactory();
session = sf.getCurrentSession();
ts = session.beginTransaction();
String hql="select new ORMdemo(u.username,u.password) from ORMdemo as u";
Query query =session.createQuery(hql);
List<ORMdemo>us=query.list();
for(ORMdemo u:us){
System.out.println(u.getUsername()+" "+u.getPassword());
}
ts.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
if(ts != null)
{
ts.rollback();
}
e.printStackTrace();
}
}