Hibernate笔记
来源:互联网 发布:java文件上传中文乱码 编辑:程序博客网 时间:2024/06/07 12:43
ORM(Object/Relationship Mapping):对象/关系映射
创建Hibernate的配置文件
创建持久化类
创建对象-关系映射文件
通过HibernateAPI编写访问数据库的代码
MYSQL语句的规范
关键字与函数名称全部大写
数据库名称、表名称、字段名称全部小写
SQL语句必须以分号结尾
hibernate.cfg.xml常用配置
hibernate.show_sql SQL语句输出到控制台
hibernate.format_sql 输出到控制台的SQL语句是否排版
hbm2ddl.auto CREATE/UPDATE可以帮助由java代码生成数据库脚本进而生成具体的表结构
hibernate.default_schema 默认的数据库
hibernate.dialect 配置数据库方言
session可以理解为操作数据库的对象。session与connection,是哦多对一的关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用。
hibernate对数据的操作都封装在事物当中,并且默认是非自动提交的方式。
获得session对象:
1) openSession
2) getCurrentSession
如果使用getCurrentSession需要在hibernate.cfg.xml文件中进行配置:
如果是本地事物(jdbc事务)
<propertyname=”hibernate.current_session_context_class”>thread</property>
如果是全局事务(jta事务)
<propertyname=”hibernate.current_session_context_class”>jta</property>
openSession与getCurrentSession的区别
1. getCurrentSession在事务提交或者回滚之后会自动关闭,而openSession需要手动关闭。如果没有关闭,多次之后会导致连接池溢出。
2. openSession每次创建新的session对象,getCurrentSession使用现有的session对象。
hbm配置文件常用设置
<hibernate-mapping
schema=”schemaName”
catalog=”catalogName”
default-cascade=”cascade_style” //级联风格
default-access=”field|property|ClassName” //访问策略
default-lazy=”true|false” //加载策略
package=”packagename”
/>
<class
name=”ClassName”
table=”tableName”
batch-size=”N”
where=”condition”
entity-name=”EntityName:
/>
<id
name=”propertyName”
type=”typename”
column=”column_name”
length=”length”
<generator class=“generatorClass”/
</id>
单一主键
assigned由java应用程序负责生成
native由底层数据库自动生成标示符
组件属性
实体类中的某个属性属于用户自定义的类的对象
<componentname=”address” class=”Address”>
<property name=”postcode” column=”POSTCODE”></property>
<property name=”phone” column=”PHONE”></property>
<property name=”address” column=ADDRESS”></property>
</component>
get与load的区别
在不考虑缓存的情况下,get方法会在调用之后立即向数据库发出sql语句,返回持久化对象。load方法会在调用后返回一个代理对象,该代理对象只保存了实体对象的id,直到使用对象的非主键属性时才会发出sql语句。
查询不存在的数据时,get方法返回null,load方法抛出异常。
- Hibernate笔记
- Hibernate 笔记
- Hibernate笔记
- Hibernate笔记
- Hibernate笔记
- hibernate笔记
- Hibernate笔记
- Hibernate笔记
- hibernate笔记
- hibernate笔记
- Hibernate笔记
- hibernate 笔记
- Hibernate笔记
- Hibernate笔记
- Hibernate 笔记
- Hibernate 笔记
- Hibernate 笔记
- Hibernate笔记
- 多态与虚函数3
- javascript 学习小结 (二)新增小数取整各种方法 by FungLeo
- dede-采集替换关键词为空
- session与cookie的区别
- Mockito的使用笔记
- Hibernate笔记
- 异速联6.2.2 255用户200移动用户终身使用补丁麦枫论坛版
- 取HTTP response的suggestedFilename中文乱码问题
- 多媒体触摸一体机威胁电子白板?
- x64 Tail Call Elimination
- IoT.js VS Node.js
- JAVA文件操作1
- 搭建私有云的5大主流方案
- CentOS 7 网络配置实例