Object Relational Mapping框架之Hibernate
时间:2022-04-24
本文章向大家介绍Object Relational Mapping框架之Hibernate,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
hibernate框架简介:
hibernate框架就是开发中在持久层中应用居多的ORM框架,它对JDBC做了轻量级的封装。
什么是ORM:Object Relational Mapping(对象关系映射),也就是将java中的对象和数据库中的数据表建立映射关系,当我们在操作java中的对象时就可以操作数据库中的表了。
使用hibernate框架开发流程:
hibernate开发需求创建俩个配置文件,一个是映射文件,另一个hibernate的框架配置文件。
创建映射文件,该映射文件一般命名规则是(类名.hbm.xml)。
- class标签:建立java类和关系数据表的映射。
- name:类的全路径。
- table:数据库中被建立映射的表名称,如果类名和数据库名一致该属性可以省略。
- catalog:数据库名称。
- id标签:建立主键和java类中属性的映射。
- name:与表中的主键对应的类中的属性名称。
- column:表中的主键名。
- length:字段的长度。
- type:字段的数据类型。
- property标签:建立关系表中普通字段和java类中属性的映射。
- name:与表中除了主键对应的类中的属性名称。
- column:表中除了主键外的普通字段名称。
- length:字段的长度。
- type:字段的数据类型。
- not-null:非空。
- unique:唯一。
创建hibernate核心配置文件(2种:hibernate.properties----不能加载映射文件 hibernate.cfg.xml----结构清晰【通常使用这一种】)。
核心配置文件中的内容:
- 数据库连接的基本参数:
- hibernate的一些基本属性:
- 加载映射文件:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 5 6 <hibernate-configuration> 7 <session-factory> 8 <!-- 数据库连接的配置: --> 9 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 10 <property name="hibernate.connection.url">jdbc:mysql:///hibernate_crm</property> 11 <property name="hibernate.connection.username">root</property> 12 <property name="hibernate.connection.password">123</property> 13 14 <!-- 配置C3P0连接池: --> 15 <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 16 <!--在连接池中可用的数据库连接的最少数目 --> 17 <property name="c3p0.min_size">5</property> 18 <!--在连接池中所有数据库连接的最大数目 --> 19 <property name="c3p0.max_size">20</property> 20 <!--设定数据库连接的过期时间,以秒为单位,如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 --> 21 <property name="c3p0.timeout">120</property> 22 <!--每3000秒检查所有连接池中的空闲连接 以秒为单位--> 23 <property name="c3p0.idle_test_period">3000</property> 24 25 <!-- 26 配置数据库事务的隔离级别: 27 1、read uncommitted (1) : 脏读,可重复读,虚读三种情况都有可能发生。 28 2、read committed (2) : 避免脏读,可重复读和虚读有可能发生。 29 3、repeatable read (4) : 避免脏读和可重复读,但是虚读有可能发生。 30 4、serializable (8) : 以上出现的情况都能解决。 31 --> 32 <property name="hibernate.connection.isolation">4</property> 33 34 <!-- hibernate中设置可以使用与当前线程绑定的session连接对象: --> 35 <property name="hibernate.current_session_context_class">thread</property> 36 37 38 <!-- hibernate的相关属性配置: --> 39 <!-- 必须配置:mysql的方言配置 --> 40 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 41 <!-- 可选配置:显示sql、格式化sql、hbm2ddl等 --> 42 <property name="hibernate.show_sql">true</property> 43 <property name="hibernate.format_sql">true</property> 44 <property name="hibernate.hbm2ddl.auto">update</property> 45 46 <!-- 加载映射文件: --> 47 <mapping resource="com/itheima/domain/Customer.hbm.xml"/> 48 <mapping resource="com/itheima/domain/LinkMan.hbm.xml"/> 49 <mapping resource="com/itheima/domain/User.hbm.xml"/> 50 <mapping resource="com/itheima/domain/Role.hbm.xml"/> 51 52 </session-factory> 53 </hibernate-configuration>
- 简单易学的机器学习算法——基于密度的聚类算法DBSCAN
- 厚土Go学习笔记 | 29. 接口
- Golang Template 简明笔记
- hotspare的copyback(r7笔记第30天)
- Spring-AOP
- DBA和开发同事的一些代沟(三)(r7笔记第29天)
- 简单易学的机器学习算法——非线性支持向量机
- 一条关于swap争用的报警邮件分析(一)(r7笔记第28天)
- Spring-IOC(2)
- Python3 pandas read_csv 读取txt文件报错:IOError: Initializing from file failed
- dataguard添加临时数据文件的bug(r7笔记第27天)
- 简单易学的机器学习算法——线性支持向量机
- Java设计模式-模板方式模式
- 由一条create语句的问题对比mysql和oracle中的date差别 (r7笔记第26天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法