Hibernate核心API

小编:管理员 522阅读 2022.09.14

核心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 list = query.list();
    System.out.println(list);
}
复制
关联标签: