Hibernate简单总结

本文深入介绍了ORM的概念及其在Hibernate中的应用。ORM是一种将对象模型与关系数据库进行映射的技术,而Hibernate则是实现这一映射的流行框架。文章详细阐述了Hibernate的配置方式、核心组件及其在数据库操作中的具体运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

ORM(Object Relational Mapping) 是对象到关系的映射,它的作用是在关系数据库与对象之间建立一个自动映射,将关系数据库中的表映射成为对象(持久化类)。

Hibernate通过持久化类(*.java)、映射文件(*.hbm.xml)和配置文件(*.cfg.xml)操作关系型 数据库。

 

              

Hibernate中最重要的3个类: 配置类(Configuration)、会话工厂类(SessionFactory)和会话类(Session)

Configuration:数据库驱动、数据库URL、数据库用户名、数据库用户名密码、数据库适配器(dialect)

SessionFactory:会话工厂类是生产Session的工厂,保存了当前数据库中所有的映射关系。它是一个线程安全类。

Session:Hibernate中数据库持久化的核心,负责Hibernate中所有持久化操作(增、删、改、查)。它是一个非线程安全类,不要多线程共享一个Session

 

获取Hibernate

       可以通过MyEclipse向项目添加Hibernate模块,也可以导入Hibernate包

 Hibernate配置文件(*.cfg.xml)

      数据库驱动、数据库连接URL、数据库连接用户名、数据库连接用户密码、Hibernate方言、打印SQL语句、映射文件

持久化类

     默认构造方法(必选)、标识属性、为属性声明访问器

Hibernate映射

     持久化类的与表的映射配置

     持久化类中属性与表中字段的映射配置(主键、外键、普通属性)

     实体关联关系:多对一单向关联、多对一双向关联、一对一主键关联、一对一外键关联、多对多关联

     实体继承关系:SuperClass、SubClassA、SubClassB

                                 类继承树映射成一张表:只有一张表包含父类和子类的所有字段信息,通过type字段区分不同实体对象的信息

                                 每个子类映射成一张表:父类和子类创建3张表,分别保存各自的字段信息,通过id联系。

                                 每个具体类映射成一张表:为SubClassA、SubClassB创建两个表,表中字段为父类字段和字段组合

系统性能优化:延时加载 和 缓存

                             延时加载:load()方法,load()方法加载持久化对象时,它返回的是一个未初始化的代理,直到调用代理的某个方法是Hibernate才会访问数据库。

                                                 Product  product =(Product) session.get(Product.class,new Integer("1"));

                                                 lazy属性,通过设置持久类映射文件中的<property>元素中的lazy属性

                                                 <property name = "username" type = "string" length ="45" lazy = "true">

                                                                    <column name = "username">

                                                 </property>

                              缓存:一级缓存(Session 缓存)和二级缓存(SessionFactory 缓存)

                                         同一个Session中可以共享一级缓存

                                         不同Session间可以共享二级缓存

                                        Hibernate未提供二级缓存的产品化实现,需要单独配置(Hibernate 配置文件中开启二级缓存并导入相应包、持久化类中指定缓存策略、项目classpath                                           根目录中加入缓存配置文件ehcache.xml)

查询数据中get和load方法的区别

        get方法会立刻访问数据,load方法只有在返回的代理对象被调用时才会发出SQL访问数据

                                      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值