3.Hibernate基础配置
1.Hibernate.cfg.xml:hbm2ddl.auto
在SessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库
<property name="hbm2ddl.auto">create</property> 除了 create 还有其他取值,可以去查文档
a)先建表还是先建实体类 (理论先类,实际先表)
2.搭建日志环境并配置显示DDL语句(数据库定义语言:直接提交的)(就是SQL语句)
使用slf接口 ,然后使用log4j的实现(slf是一个规范,一个标准,类似于接口,类似的标准还有JPA,JDBC等)
a)首先引入 slf-api-1.5.8.jar 这个接口标准
b)然后引入log4j(log4j-1.2.14.jar)
c)然后再引入slf4j实现LOG4J的适配器jar包(slf4j-log4j12-1.5.8.jar) (这里体现了适配器模式)
d)最后创建log4j的配置文件(log4j.properties),并加以修改,只要保留
适配器模式将一个类的接口转换成客户期望的另一个接口,让原本不兼容的接口可以合作无间。
原本 slf 接口 和 log4j 接口是不兼容的,但是这里通过slf4j-log4j12-1.5.8.jar,将 log4j中的接口 转换成 符合 slf 标准的接口
JDBC也是类似,只提供了一个标准,mysql 和 oracle 都要使用相应的jar包,使其能够适配JDBC这个标准
3.hibernate.cfg.xml:show_sql 是否输出所有语句到控制台
format_sql 是否在log 和 console中 打印出更漂亮的SQL
4.表名和类名不同,如何对表名进行配置 (默认加了@Entity的类名就是表名)
1.Annotation:使用@Table(name="tableName") 进行注解
2.xml:<class name="Student" table="t_student">
5.字段名和属性名相同
1.Annotation:默认为@Basic (如果成员属性没有加入任何注解,则默认在前面加入了@Basic)
2.xml中不需要写 column
6.字段名和属性名不同
1.Annotation:使用@Column(name="columnName") 进行注解
2.xml:<property name="name" column="_name"/>
7.不需要持久化的字段 (即实体类某个成员属性不打算保存在DB中)
1.Annotation:使用@Transient 进行注解就可以了
2.xml:不写就可以(就是不需要对这个成员属性进行映射)
8.映射日期与时间类型,指定时间精度(数据库中存的数据的类型)
1.Annotation:使用Temporal(value=TemporalType) 来注解表示日期和时间
其中Temporal 有三个值:Temporal.TIMESTAMP 表示 yyyy-MM-dd HH:mm:ss
Temporal.DATE 表示 yyyy-MM-dd
Temporal.TIME 表示 HH:mm:ss
注:当使用注解时,属性为value时,则这个属性名可以省略,例如:@Temporal(TemporalType)
2.xml:使用type属性指定hibernate类型
<property name="birthDate" type="date"/>
注:hibernate 日期时间类型有:date,time,timestamp,当然也可以使用java包装类
9.映射枚举类型
1.Annotation:使用@Enumerated(value=EnumType) 来注解表示此成员属性为枚举映射到数据库
其中 EnumType 可以取两个值:
1.EnumType.STRING 表示直接将枚举名称存入数据库 (数据库字段的类型为varchar(255))
2.EnumType.ORDINAL 表示将枚举所对应的下标数值存入数据库(数据库字段的类型为int)
2.xml:映射非常的麻烦,要先定义自定义类型,然后再使用这个定义的类型,一般不使用这种方式
10.字段映射的位置(field 或者 get方法)
即对字段的注解是放在字段本身,还是该字段的get方法上
Best practice:应该放在get方法上,原因:java的封装性
字段的定义是 private, 是不希望别人来访问的,如果强行将注解放到 字段上,对,hibernate的确也可以访问到(暴力反射),
但是后果就是会破坏java的封装性,而放到 get方法(public)就不会有这样的情况,
3.Hibernate基础配置的更多相关文章
- Hibernate学习笔记2.1(Hibernate基础配置)
Hibernate基础配置 1.<property name="hbm2ddl.auto">update</property> 在SessionFactor ...
- Hibernate 基础配置及常用功能(三)
本章重点讲述Hibernate对象的三种状态以及如何配置二级缓存 有关Hibernate的三种状态如何相互转换网上都能查到,官方文档描述的也比较详细.这里主要是针对几个重点方法做代码演示. 一.状态转 ...
- Hibernate 基础配置及常用功能(一)
本来是想等全部框架测试完以后再统一发布的,但是随着测试的一点点增加感觉把需要叙述的东西放在一起终将会是一场灾难.所以还是打算分成几章来描述,其中还包括一些有待解决的问题.短期很难腾出时间来仔细阅读Hi ...
- Hibernate 基础配置及常用功能(二)
本章主要是描述几种经典映射关系,顺带比较Hibernate4.x和Hibernate5.x之间的区别. 一.建立测试工程目录 有关实体类之间的相互映射关系,Hibernate官方文档其实描述的非常详细 ...
- hibernate基础配置
数据库表名和类名 一致 注解:可写可不写: XML:可写可不写: <class name="Student"> 不一致 注解: public class Teache ...
- Hibernate学习笔记2.3(Hibernate基础配置)
映射,注释可以放在成员变量上面,也可以放在get方法上面 写在成员变量的话 破坏了java的面向对象思维 直接让hibernate访问内部的私有元素 要是能直接设指不合适哈哈 所以主张写在get方法上 ...
- Hibernate游记——装备篇《二》(基础配置示例)
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...
- Java进阶知识03 Hibernate的基础配置详解
1.Hibernate的原理/流程步骤 1.通过Configuration().configure(); 读取并解析hibernate.cfg.xml配置文件,并创建一个configuration对象 ...
- hibernate学习笔记(1)基础配置与jar包
下载hibernate基础jar包,并解压hibernate-core-4.2.4.final 在myeclipse中添加hibernate的dtd支持: location为D:\学习\imooc-h ...
随机推荐
- 【转载】网页JS获取当前地理位置(省市区)
眼看2014又要过去了,翻翻今年的文章好像没有写几篇,忙真的或许已经不能成为借口了,在忙时间还是有的,就像海绵里的水挤挤总会有滴.真真的原因是没有学习过什么新的技术,工作过程中遇到的问题也不是非常难并 ...
- Can't initialize physical volume "/dev/sdb" of volume group "cinder-volumes" without -ff /dev/sdb: physical volume not initialized.
原因:无法初始化物理量,之前创建的cinder-volumes没有卸载 方法一: [root@storage cinder]# lsblk NAME MAJ:MIN RM SIZE RO TYPE M ...
- OSI 的七层模型
一.概念 概念:开放系统互联参考模型,是由 ISO(国际标准化组织)定义的.目的:规范不同系统的互联标准,使两个不同的系统能够较容易的通讯. 网络刚面世时,通常只有同一家厂商的计算机才能彼此通讯.OS ...
- COALESCE关键字的使用
COALESCE是sql标准里面的一个关键字,我们可以和聚合函数sum,count,max等一起使用完成一些特殊的功能. 以下sql语句基于mysql 1.查询某一个列总和,如果没有数据或者NULL返 ...
- Java集合(4):未获支持的操作及UnsupportedOperationException
执行各种添加和移除的方法在Collection中都是可选操作的,这意味着实现类并不需要为这些方法提供实现.当我们调用这些方法时,将不会执行有意义的行为,而是通常抛出UnsupportedOperati ...
- 【学习笔记】XPath定位总结
XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言. 原理:基于html的文档目录结构进行定位元素. 以html代码为例讲解各种定位方法: ...
- IntelliJ IDEA入门之常用配置以及问题解决(持续更新中)
软件版本: IntelliJ IDEA 2019.1.1(Ultimate Edition) 运行环境: JDK1.8, Tomcat8.0, Maven3.6 我们在学习新的无论是jar包, 框架, ...
- K/3 Cloud 中FID和FMasterID的区别
经常会用到,例如物料在多组织情况下. 例如一个物料分配不同组织后,内码FID肯定是不同的,但FMaterId还是一样的,因为是用一个物料. FMASTERID是和物料编码对应的内码,即一个物料编码对应 ...
- springboot整合es客户端操作elasticsearch(四)
对文档查询,在实际开发中,对文档的查询也是偏多的,记得之前在mou快递公司,做了一套事实的揽件数据操作,就是通过这个来存储数据的,由于一天的数据最少拥有3500万数据 所以是比较多的,而且还要求查询速 ...
- 关于keildownload键变为灰色不能使用的问题
有时候 有些朋友可能会遇到这样的问题 突然间download键变成灰色,导致不能将程序下载到芯片中 遇到中问题如果不是软件卡了 那就是可能一不小心点错了,关掉了下载条件“约定” 可以点“魔术棒” ...