一.Hibernate学习之表单映射
1.什么是ORM
ORM(object / relationship /mapping):对象/关系映射
Hibernate是一种可行的ORM框架技术
2.Hibernate简介(开源)
3.Hibernate例子
(1)创建Hibernate的配置文件 Hibernate.cfg.xml
(2)创建持久化类
(3)创建对象关系映射
(4)通过Hibernate-api编写访问数据库的代码
二.Hibernate进阶
4.Hibernate.cfg.xml常配置
(1) hibernate.show_sql 表示hibernate运行时将sql语句输出到控制台,编码便于测试。
(2) hibernate.format_sql 表示输出到控制台的语句是否排版,设置结果为true。
(3) hbm2ddl.auto 可以帮助java代码生成数据库脚本,进而生成表结构。create|update| create-drop|valildate
(4)hibernate.default_schema 表示默认数据库
(5)hibernate.dialect 表示默认数据库方言,针对特殊数据库进行优化
注:hibernate前缀可以省略
5.session简介
6.transcation简介(事物简介)
注:不开启事物,对象不能保存到数据库中
7.session详解
(1)如何获取session对象:>1 openSession
2 getCurrentSession
注:如果使用第二种方法获取session对象,需要在hibernate.cfg.xml配置文件中配置,
如果是本地事物:(jdbc事物)
<propertyname =” hibernate.current_session_context_class”>thread</propertyname>
如果是全局事物:(jta事物)
<propertyname =” hibernate.current_session_context_class”>jta</propertyname>
(2)opensession 和 getcurrentsession的区别
1>opensession每次创建新的session对象;getcurrentsession使用现有的session对象。
2>getcurrentsession在事物提交或者回滚之后会自动关闭;opensession需手动关闭,若没有手动关闭,多次连接后会导致连接池溢出。
三.Hibernate单表操作
1.单一主键
1>assigned 由java程序负责生成(手工赋值)
2>native 由底层数据库自动生成标识符,如果是MYSQL数据库就是 auto increment(自动增长);如果是Orale就是Sequence(序列),等等
2.基本类型
映射类型:date(yy-mm-dd) time(hh:mi:ss) timestamp(yy-mm-dd-hh-mi-ss)
Java类型:java.util.date/java.sql.date | java.util.date/java.sql.time | java.util.date/java.sql.timestamp
Sql类型:(不常用)
3.对象类型
映射类型: binary text clob blob
Java类型: bete[ ] java.lang.string java.sql.clob java.sql.blob
标准SQL类型: varchar(blob) clob clob blob
Mysql类型: blob text text blob
Oracle类型: blob clob clob blob
4组件属性
实体类中的某个属性属于用户自定义的类的对象
5单表操作CRUD实例
Save get load update delete
get和load区别:
- get方法
在调用之后立即向数据库发出sql语句,返回持久化对象;
查询数据库中不存的的数据时,get方法返回null; - load 方法
在调用之后返回一个代理对象;该代理对象只保存实体的id,直到使用对象的非主键属性时才会发出sql 语句。
load方法抛出异常org.hibernare.ObjectNotFoundException