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基础配置的更多相关文章

  1. Hibernate学习笔记2.1(Hibernate基础配置)

    Hibernate基础配置 1.<property name="hbm2ddl.auto">update</property> 在SessionFactor ...

  2. Hibernate 基础配置及常用功能(三)

    本章重点讲述Hibernate对象的三种状态以及如何配置二级缓存 有关Hibernate的三种状态如何相互转换网上都能查到,官方文档描述的也比较详细.这里主要是针对几个重点方法做代码演示. 一.状态转 ...

  3. Hibernate 基础配置及常用功能(一)

    本来是想等全部框架测试完以后再统一发布的,但是随着测试的一点点增加感觉把需要叙述的东西放在一起终将会是一场灾难.所以还是打算分成几章来描述,其中还包括一些有待解决的问题.短期很难腾出时间来仔细阅读Hi ...

  4. Hibernate 基础配置及常用功能(二)

    本章主要是描述几种经典映射关系,顺带比较Hibernate4.x和Hibernate5.x之间的区别. 一.建立测试工程目录 有关实体类之间的相互映射关系,Hibernate官方文档其实描述的非常详细 ...

  5. hibernate基础配置

    数据库表名和类名 一致 注解:可写可不写: XML:可写可不写: <class name="Student"> 不一致 注解:  public class Teache ...

  6. Hibernate学习笔记2.3(Hibernate基础配置)

    映射,注释可以放在成员变量上面,也可以放在get方法上面 写在成员变量的话 破坏了java的面向对象思维 直接让hibernate访问内部的私有元素 要是能直接设指不合适哈哈 所以主张写在get方法上 ...

  7. Hibernate游记——装备篇《二》(基础配置示例)

    <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...

  8. Java进阶知识03 Hibernate的基础配置详解

    1.Hibernate的原理/流程步骤 1.通过Configuration().configure(); 读取并解析hibernate.cfg.xml配置文件,并创建一个configuration对象 ...

  9. hibernate学习笔记(1)基础配置与jar包

    下载hibernate基础jar包,并解压hibernate-core-4.2.4.final 在myeclipse中添加hibernate的dtd支持: location为D:\学习\imooc-h ...

随机推荐

  1. pytest+allure展示环境信息

    allure展示环境信息 要将信息添加到Environment小部件,只需在生成报告之前在目录中创建environment.properties(或environment.xml)文件allure-r ...

  2. keepalived+LVS-DR集群

    一.Keepalived介绍 keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层.第 4 层和第 5层交换. Keepalived 的 ...

  3. 连接服务器VNC

    1,启动vnc vncserver 2,提示输入密码 3,Would you like to enter a view-only password (y/n)?  选择n 4,会生成一个端口号 5, ...

  4. mysql 高性能日记之索引(持续更新)

    本文仅限于自己读写的笔记,需要具有一定 mysql(inodb,myisam 引擎)基础的高端玩家,不感兴趣的玩家们就不用在意了 Inodb 引擎 1,每个新建索引,都需要考虑清楚看是否是必须的,很多 ...

  5. Visual Studio工具

    下载地址: https://code.visualstudio.com 插件安装: http://blog.csdn.net/u011127019/article/details/53158660 下 ...

  6. springcloud随便写点

    eureka  注册注册 ribbon 负载均衡 feign  声名式client hystrix  断路器 zuul  网关,智能路由,过滤 config 集群配置 bus 分布式的节点用轻量的消息 ...

  7. charles重发网络请求&模拟慢速网络&过滤网络请求

    重发网络请求&模拟慢速网络&过滤网络请求 重发网络请求:后端调试的过程中,一直在客户端进行点点点比较麻烦,此时直接发送请求比较方便查看调试后的结果 模拟慢速网络:用户的网络不能一直是快 ...

  8. 第12课.经典问题解析(const;指针和引用)

    问题1:const什么时候为只读变量?什么时候是常量? const常量的判别准则: a.只有用字面量初始化的const常量才会进入符号表(直接初始化过的const为常量) b.被使用其他变量初始化的c ...

  9. 精通Java中的volatile关键字

    在一些开源的框架的源码当中时不时都可以看到volatile这个关键字,最近特意学习一下volatile关键字的使用方法. 很多资料中是这样介绍volatile关键字的: volatile是轻量级的sy ...

  10. Redis(1.3)Redis的基本特性(事务、多数据库)

    [1]两大特性 (1)多数据库 1个redis实例 可以有16个数据库,默认下标为0~15,默认连接到的是 0 下标的数据库. (2)事务 [2]多数据库 [2.1]概念 1个redis实例 可以有1 ...