Hibernate查询总结
-
-
OID
—get
-
-
-
对象属性导航查询
-
-
-
HQL
-
-
-
Criteria
-
-
- 原生
SQL
- 原生
–待补充–
对象属性导航查询
//对象导航查询代码
@Test
public void testSelectObject(){
Session session = null;
Transaction transaction = null;
try {
//1.使用SessionFactory创建Session对象
//理解:类似于jdbc的连接数据库
session = HibernateUtils.getSessionObject();
//2.开启事务
transaction = session.beginTransaction();
//3.写具体的crud操作
//查询cid=3的客户,在查询他的所有联系人
//01.查询cid=3的客户
Customer customer = session.get(Customer.class, 3);
//02.再查询cid=3的客户的所有联系人
//通过客户的联系人属性获取其所有的联系人
Set<LinkMan> linkMans = customer.getSetLinkMan();
for (LinkMan linkMan : linkMans) {
System.out.println(linkMan);
}
//4.提交事务
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
//5.回滚事务
transaction.rollback();
} finally {
//6.关闭资源 在使用了与本地线程绑定的session对象之后,就不需要手动关闭session了
session.close();
}
}
附:HibernateUtils
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
private static SessionFactory sf;
static{
//1 创建,调用空参构造
Configuration conf = new Configuration().configure();
//2 根据配置信息,创建 SessionFactory对象
sf = conf.buildSessionFactory();
}
//获得session => 获得全新session
public static Session openSession(){
Session session = sf.openSession();//3 获得session
return session;
}
//获得session => 获得与线程绑定的session
public static Session getCurrentSession(){
Session session = sf.getCurrentSession();//3 获得session
return session;
}
}