核心API
核心API
1.Configuration
2.SessionFactory
3.Session
01 Configration
Configuration相当于是Hibernate的配置对象,通过这个对象去加载核心配置文件,把里面的数据内容或得到,才能进行后面的工作
Configuration 类的作用是对Hibernate 进行配置,以及对它进行启动。
在Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。
虽然Configuration 类在整个Hibernate 项目中只扮演着一个很小的角色,但它是启动hibernate 时所遇到的第一个对象。
1.加载核心配置文件
Configuration cfg = new configuration().configure();
2.加载映射文件
属性文件是没有办法加载映射,可以通过加载了核心配置文件的Configuration对象来加载映射文件
cfg.addResource("映射文件的全路径");
02 SessionFactory
SessionFactory接口:SessionFactory接口负责初始化Hibernate。并负责创建Session对象。
需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
内部维护了Hibernate的连接池和Hibernate的二级缓存
一个项目只需要创建一个就行了,因为里面有连接池,连接池创建一个就可以了
得到Session对象
Session session = sessionFactory.openSession();
因为只需要创建一次,很多类需要操作数据库,就不可能每个类都创建一次。可以单独写一个工具类,直接通过工具类来获取连接对象
public class HibernateUtil{
public static final configration;
public static final sessionFactory;
static{
configration = new Configration().configre();
sessionFactory = configration.buildSessionFactory();
}
public static Session openSession(){
return sessionFactory.openSession();
}
}
之后要获取连接就可以直接
Session ss = HibernateUtil.openSession();
03 Session
Session相当于是连接对象通过它来完成与数据库的增删改查等操作
保存方法 | save(Object obj) |
---|---|
查询指定 | get(T.class,id) |
load(T.class,id) | |
修改方法 | update(Object obj) |
删除方法 | delete(Object obj) |
查询所有 | createQuery("from domain") |
保存(保存对象插入到映射的表格)
public void hibernateTest(){
Session session = HibernateUtil.openSession();
Student stu = new Student();
stu.setName("李四");
stu.setAge(17);
session.save(stu);
session.close();
}
查询指定(通过主键查询get()返回包装成对应domain对象)
public void hibernateTest(){
Session session = HibernateUtil.openSession();
Student stu = session.get(Student.class,2);
}
修改方法
1.创建对象直接更新,没有改的全设为null(不建议使用)
2.先查询得到对象再修改,没有修改的值不变
public void hibernateTest(){
Session session = HibernateUtil.openSession();
/*Student stu = new Student();
stu.setId(1);
stu.setName("小明");
session.update(stu);
*/
Student stu = session.get(Student.class,1);
stu.setName="小明";
session.update(stu);
}
删除方法(也是有创建对象删除和查询后再删除。这里直接用后者)
public void hibernateTest(){
Session session = HibernateUtil.openSession();
Student stu = session.get(Student.class,1);
session.delete(stu);
}
查询全部(from后面是对象名)
public void hibernateTest{
Session session = HibernateUtil.openSession();
Query query = session.createQuery("from Student");
List<Student> list = query.list();
System.out.println(list);
}