关于hibernate的总结
什么是hibernate?hibernate用来做什么?
hibernate可以说是半成品项目,是一个操作数据库的框架,实现了对JDBC的封装;
Hibernate实现了ORM,使Java程序员可以方便的运用面向对象的编程思想来操纵关系型数据库;
Hibernate是对JDBC的轻量级封装,必要时Java程序员可以绕过Hibernate直接访问JDBC API;
Hibernate不仅可以应用在独立的Java程序中,还可以应用在Java Web项目中,可以和多种Web服务器集成,并支持多种数据库平台。
hibernate核心接口
session:负责被持久化对象CRUD操作
sessionFactory:负责初始化hibernate,创建session对象
configuration:负责配置并启动hibernate,创建SessionFactory
Transaction:负责事物相关的操作
Query和Criteria接口:负责执行各种数据库查询
创建Hibernate项目的步骤
- 安装Eclipse、Mysql;
- 下载Hibernate,并解压缩;
- 使用Eclipse创建新的项目;
- 引入Hibernate及其依赖库(jar包);
- 引入Mysql数据库驱动包;
- 编写Hibernate配置文件;
- 创建Java持久化类XXX.java;
- 编写持久化类的映射配置文件XXX.hbm.xml;
- 使用Hibernate API 完成对象的持久化。
需要引入的jar包
数据库的驱动jar包要根据自己的数据库版本来决定
项目目录结构说明
持久化类编写规则
持久化:将内存中的一个对象持久化到数据库中的过程
Hibernate框架就是用来进行持久化的框架。
持久化类:一个java对象与数据库的一个表建立了映射关系(java类+数据库表)
规则
对持久化类提供一个无参的构造方法,因为hibernate底层要使用
属性需要私有,对似有属性提供公有的get和set方法,hibernate中获取,设置和获取对象的值。
对持久化类提供一个唯一标识OID与数据库主键对应,Java中通过对象地址区分是否使用一个对象,数据库中通过主键区分是否是同一个记录,hibernate通过OID属性区分是否同一个对象。
持久化类中的属性尽量使用包装类的类型来定义,因为基本数据类型默认值是0,会有很多歧义。
持久化类不要使用final修饰,延迟加载本身是hibernate优化手段,最后返回的是一个代理对象,可以对没有接口的类产生代理,使用了非常底层的字节码增强技术,继承这个类进行代理。如果不能被继承,就无法产生代理对象,延迟加载就会失效,不能进行优化,load和get方法没区别了。
核心的配置
核心配置方式
一种方式:属性文件的方式
Hibernate.properties
二种方式:xml文件的方式
hibernate.cfg.xml
必须的配置
连接数据库的基本参数
驱动类
url路径
用户名
密码
方言
可选配置
显示sql,hibernate.show.sql
格式化sql,hibernate.format.sql
自动建表,hibernate.hbm2ddl.auto
none,不使用自动建表
create,如果数据库中已有表,删除原有,创建新表,如果没有表,新建表
create-drog,数据库中已有表,删除原有,执行操作,执行完后删除这个表,如果没有,新建一个,使用完了删除(测试用)。
update,如果数据库中已有表,使用原来的表插入数据。如果没有表创建一个新表,可以更新表结构,比如把property的column的值改掉,执行语句后表里也会改。
valiadate,如果没有表,不会创建,只会使用原有的表,用于校验。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration