Hibernate框架基础(学习记录)

目录

一、什么是ORM

二、主流的ORM框架

三、Hibernate的基础概念

四、Hibernate的框架的学习流程

五、Hibernate的入门程序

 六、Hibernate的get和load方法【了解】

七、Hibernate的对象的状态转换(了解)


一、什么是ORM

ORM - Object Relational Mapping 对象关系映射

映射内容:

  • 数据库表 JAVA实体类 (数据的载体)
  • 表的字段 JAVA类中的属性
  • 数据库的数据类型 JVAA的数据类型
  • 数据库表的记录 JAVA类的对象
  • 表与表的主外键关系 JAVA的对象间的关联关系(一对一、一对多、多对一、多对多

二、主流的ORM框架

  • Hibernate 完整的orm框架 主要映射应用程序的对象模型,更能体现ORM的思想。
  • Mybatis 非完整的orm框架 主要映射的是sql语句 Mybatis-plus
  • JPA 类似hibernate框架

三、Hibernate的基础概念

  • 持久化 程序的对象在瞬时状态(内存)与持久状态(磁盘)之间转换的机制。
  • 持久化操作 主要对数据库的增删改查的操作
  • 持久层 指的是数据访问层(DAO层)
  • Hibernate与JDBC的关系

       JDBC是底层的数据库的交互技术,Hibernate封装了JDBC,提高了DAO的开发效率。

四、Hibernate的框架的学习流程

五、Hibernate的入门程序

(1)手动配置

  • 添加hibernate的类库(jar包)
  • 配置hibernate.cfg.xml的全局文件
  • <session-factory>
    	<property name="dialect">
    		org.hibernate.dialect.MySQLDialect
    	</property>
    	<property name="connection.url">
    		jdbc:mysql://localhost:3306/hiberdb?useUnicode=true&amp;characterEncoding=UTF-8
    	</property>
    	<property name="connection.username">root</property>
    	<property name="connection.driver_class">
    		com.mysql.cj.jdbc.Driver
    	</property>
    	<property name="myeclipse.connection.profile">myemp</property>
    	<property name="show_sql">true</property>
    	<property name="format_sql">true</property>
    
    	<!-- 注册映射文件 -->
    	<mapping resource="com/web/hiber4/entity/Users.hbm.xml" />
    </session-factory>

    说明:

    • dialect 必选 指定数据库的方言(类型)
    • show_sql 指定为true时,会在控制台输出执行的sql语句
    • format_sql 格式化输出sql
  • 创建实体类
  • 编写ORM映射文件
  • <hibernate-mapping>
        <class name="com.gec.hiber4.entity.Users" table="USERS" >
            <id name="id" type="java.lang.Integer">
                <column name="ID" precision="4" scale="0" />
                <!-- 快㨗键 alt+/ -->
                <generator class="identity">
                </generator>
            </id>
            <property name="name" type="java.lang.String">
                <column name="NAME" not-null="true" />
            </property>
            <property name="password" type="java.lang.String">
                <column name="PASSWORD" not-null="true" />
            </property>
            <property name="telephone" type="java.lang.String">
                <column name="TELEPHONE" />
            </property>
            <property name="username" type="java.lang.String">
                <column name="USERNAME" />
            </property>
            <property name="isadmin" type="java.lang.String">
                <column name="ISADMIN" />
            </property>
        </class>
    </hibernate-mapping>

    主键生成策略(器);

    • identity 主键自增(建议) mysql或sqlserver 由底层数据库实现主键自增
    • increment 主键自增 由hibernate程序实现主键自增,原则 :select max(id)+1
    • assigned 一般用于主键是字符串,由程序提供主键的生成算法
    • sequence 序列生成主键,oracle常用
    • uuid 全球唯一标识码,32位长度的字符串,jdk提供相应在工具生成uuid,在分布式系统中较常用。

 六、Hibernate的get和load方法【了解】

 都是根据对象的唯一标识查询单条记录

区别:

  • get方法是即时加载数据,load方法是延时加载数据,在获取对象属性时发送sql语句。
  • 如果找不到数据时,load方法会抛出ObjectNotFoundException,get方法返回null值。

七、Hibernate的对象的状态转换(了解)

 

 说明:

  • 临时状态 当使用new实例化出来的对象,该对象还没在hibernater的容器中管理。
  • 持久状态 该对象是由hibernate容器管理的,对象与数据库的数据是一一对应关系。也称为“托管状态”。
  • 游离状态 持久状态的对象脱离容器的管理,也称为“脱管状态”

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值