前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hibernate核心API

Hibernate核心API

作者头像
木瓜煲鸡脚
发布2019-09-08 16:31:25
3060
发布2019-09-08 16:31:25
举报
文章被收录于专栏:Jasper小笔记Jasper小笔记

核心API

核心API

1.Configuration

2.SessionFactory

3.Session

01 Configration

Configuration相当于是Hibernate的配置对象,通过这个对象去加载核心配置文件,把里面的数据内容或得到,才能进行后面的工作

Configuration 类的作用是对Hibernate 进行配置,以及对它进行启动。

在Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。

虽然Configuration 类在整个Hibernate 项目中只扮演着一个很小的角色,但它是启动hibernate 时所遇到的第一个对象。

1.加载核心配置文件

代码语言:javascript
复制
Configuration cfg = new configuration().configure();

2.加载映射文件

属性文件是没有办法加载映射,可以通过加载了核心配置文件的Configuration对象来加载映射文件

代码语言:javascript
复制
cfg.addResource("映射文件的全路径");

02 SessionFactory

SessionFactory接口:SessionFactory接口负责初始化Hibernate。并负责创建Session对象。

需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

内部维护了Hibernate的连接池和Hibernate的二级缓存

一个项目只需要创建一个就行了,因为里面有连接池,连接池创建一个就可以了

得到Session对象

代码语言:javascript
复制
Session session = sessionFactory.openSession();

因为只需要创建一次,很多类需要操作数据库,就不可能每个类都创建一次。可以单独写一个工具类,直接通过工具类来获取连接对象

代码语言:javascript
复制
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();
    }
}

之后要获取连接就可以直接

代码语言:javascript
复制
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")

保存(保存对象插入到映射的表格)

代码语言:javascript
复制
public void hibernateTest(){
    Session session = HibernateUtil.openSession();
    Student stu = new Student();
    stu.setName("李四");
    stu.setAge(17);
    session.save(stu);
    session.close();
}

查询指定(通过主键查询get()返回包装成对应domain对象)

代码语言:javascript
复制
public void hibernateTest(){
     Session session = HibernateUtil.openSession();
     Student stu = session.get(Student.class,2);
 }

修改方法

1.创建对象直接更新,没有改的全设为null(不建议使用)

2.先查询得到对象再修改,没有修改的值不变

代码语言:javascript
复制
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);
}

删除方法(也是有创建对象删除和查询后再删除。这里直接用后者)

代码语言:javascript
复制
public void hibernateTest(){
    Session session = HibernateUtil.openSession();
    Student stu = session.get(Student.class,1);
    session.delete(stu);
}

查询全部(from后面是对象名)

代码语言:javascript
复制
public void hibernateTest{
    Session session = HibernateUtil.openSession();
    Query query = session.createQuery("from Student");
    List<Student> list = query.list();
    System.out.println(list);
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT那个小笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档