Hibernate--单表映射总结

第一章 初识Hibernate

ORM 对象/关系映射(Object/Relationship Mapping) 

写SQL语句的缺点:

*不同的数据库使用的SQL语法不同

*同样的功能在不同的数据库中有不同的实现方式,比如分页

*程序过分依赖SQL对程序的移植及扩展,维护等带来很大的麻烦

Hibernate是Java领域的一款开源的ORM框架技术

Hibernate对JDBC进行了非常轻量级的对象封装

其它主流的ORM框架技术:

1.MyBatis:前身就是著名的iBatis

扫描二维码关注公众号,回复: 2768382 查看本文章

2.Toplink:后被oracle收购,并重新包装为Oracle AS TopLink

3.EJB:本身是JAVAEE的规范,重量级

开发前准备:插件Hibernate Tools for Eclipse Plugins

Jboss公司推出的一个Eclipse综合开发工具插件,该插件可以简化ORM框架Hibernate

以及JBoss Seam,EJB3等的开发工作

第一个例子:创建Hibernate的配置文件;创建持久化类;创建对象-关系映射文件;通过Hibernate API编写访问数据库的代码

导入Hibernate必须的jar包 导入Mysql的jdbc驱动 导入junit架包

使用Junit进行测试 @Test:测试方法 @Before:初始化方法 @After:释放资源  

第二章 Hibernate进阶

hibernate.cfg.xml常用配置

hibernate.show_sql 是否把运行时的SQL语句输出到控制台,编码阶段便于测试

hibernate.format_sql输出到控制台的SQL语句是否进行排版,便于阅读。建议设置true

hbm2ddl.auto可以帮助由java代码生成的数据库脚本,进而生成具体的表结构。create|update|create-drop|validate

hibernate.default_schema默认的数据库

hibernate.dialect配置Hibernate数据库方言,Hibernate可针对特殊的数据库进行优化

<!-- 一次读的数据库记录数 -->

<property name="hibernate.jdbc.fetch_size">50</property>

<!-- 设定对数据库进行批量删除 -->

<property name="hibernate.jdbc.batch_size">30</property>

hibernate.max_fetch_depth设置外连接抓取树的最大深度取值. 建议设置为0到3之间

<property name="hibernate.connection.SetBigStringTryClob">true</property>

可以像操作String一样操作CLOB

CLOB和BLOB的区别

CLOB使用CHAR来保存数据。  如:保存XML文档。

BLOB就是使用二进制保存数据。  如:保存位图。

session简介

*hibernate执行流程

创建一个配置对象Configuration,用来读取hibernate.cfg.xml配置文档

创建SessionFactory对象,加载相应的对象关系映射文件

创建Session对象,相当于获得了一个数据库连接对象,可以执行session对象相应的方法(增删改查)

开启事务,执行完session的方法之后需要提交事务,最后关闭session

hibernate是对jdbc的封装,不建议直接使用jdbc的connection操作数据库,而是通过使用session操作数据库。

session与connection是多对一的关系,每个session都有一个与之相对应的connection,一个connection不同时刻可以供多个session使用。

hibernate对数据的操作都是封装在事务中,并且默认是非自动提交的方式。所以用session保存对象时,如果不开启事务,并且手工提交事务,对象并不会真正保存在数据库中。

openSession getCurrentSession

后者在事务提交或者回滚之后会自动关闭,前者openSession需要你手动关闭,如果使用openSession而没有手动关闭,多次之后会导致连接池溢出。

openSession每次创建一个新对象。getCurrentSession使用现有的对象。

第三章 Hibernate单表操作

单一主键

assigned由java应用程序负责生成(手工赋值)

native由底层数据库自动生成标识符,如果是MySQL就是increment,如果是oracle就是sequence

基本类型

Hibernate映射类型     Java类型                                          描述

integer/int                   java.lang.Integer/int                           整型

date                            java.util.Date/java.sql.Date                代表日期:yyyy-MM-dd

time                             java.util.Date/java.sql.Date               代表时间:hh:mi:ss

timestamp                   java.util.Date/java.sql.Timestamp      代表时间和日期:yyyymmddhhmiss

对象类型                     java类型                                             描述

clob                             java.sql.Clob                                      大文本类型                            

blob                             java.sql.Blob                                      大二进制数据文件(音频,视频,图片)

binary                          byte[]

text                              java.lang.String

Mysql不支持标准SQL的CLOB类型,在Mysql中,用text,mediumtext,longtext类型来表示超过长度为225的长文本数据。

组件属性------实体类中的某个属性属于用户自定义的类的对象 

总结Hibernate开发的基本步骤:

1)编写配置文档hibernate.cfg.xml

2)编写实体类

3)生成对应实体类的映射文件并添加到配置文件中

4)调用API的函数并测试

猜你喜欢

转载自blog.csdn.net/little_____white/article/details/81502295