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)就不会有这样的情况,

时间: 2024-10-10 06:27:35

3.Hibernate基础配置的相关文章

Hibernate基础配置

在hibernate.cfg.xml中的基础配置: show_sql format_sql hbm2ddl.auto :有四个选项  validate . update . create . create-drop create :数据库中没有表的话会自动创建. update: 原来有表,但是在配置文件中表的结构修改了,会自动更新数据库中的表. 通过配置文件或者annotation自动建表 搭建日志环境并配置显示DDL语句(建表语句) 搭建Junit环境(注意Junit的Bug) 表名和类名不同

Hibernate基础配置——hibernate.cfg.xml

<?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"> <!-- 

[JavaWeb基础] 005.Hibernate的配置和简单使用

1.Hibernate简介 Hibernate是一个基于Java的开源的持久化中间件,对JDBC做了轻量的封装.采用ORM映射机制,负责实现Java对象和关系数据库之间的映射,把sql语句传给数据库,并且把数据库返回的结果封装成对象.内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API.以对象的形式操作数据,提高开发效率,不用关心数据库种类(换数据库只要修改配值文件). 2.在MyEclipse上创建一个DB broswer 这个东西你可以从Window -> Show

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

下载hibernate基础jar包,并解压hibernate-core-4.2.4.final 在myeclipse中添加hibernate的dtd支持: location为D:\学习\imooc-hibernate\hibernate基础jar包\hibernate-core\hibernate-core-4.2.4.Final\org\hibernate目录下的hibernate-mapping-3.0.dtd 快速搭建hibernate环境: Connection URL改为jdbc:my

hibernate基础(1)

hibernate基础1.hibernate介绍与动手入门体验  问题:模型不匹配(java对象模型与数据库关系模型不匹配)  解决: 1.使用JDBC手工转换        2.使用ORM(Object Relation Mapping对象关系映射)框架,有Hibernate,TopLink,OJB  下载地址http://www.hibernate.org  3.2.5版本  安装配置:    配置文件:hibernate.cfg.xml,hibernate.properties 这两个文件

(转)Hibernate的配置详解

http://blog.csdn.net/yerenyuan_pku/article/details/65041077 在<Hibernate快速入门>一文中,我有讲到Hibernate的两个配置文件,今天就来详细地介绍这两个配置文件. Hibernate的配置详解 在Hibernate中,我们使用时主要有两种配置文件: 核心配置文件——hibernate.cfg.xml(主要描述Hibernate的相关配置) 映射配置文件——xxx.hbm.xml 核心配置文件 Hibernate的核心配置

Varnish基础配置实现动静分离web站点

由于一个web站点的程序的访问具有局部性特征:时间上的局部性:一个数据被访问过之后,可能很快会被再次访问到:空间局部性:一个数据被访问时,其周边的数据也有可能被访问到;varnish可将这部分数据缓存下来.缓存的数据存在被访问较频繁的数据可以称其为热区:缓存同样存在局部性:时效性:如果缓存空间耗尽:则采用LRU,最近最少使用算法:将过期的缓存清理掉 varnish的基本工作原理: Varnish通过类似于HTPP反向代理的方式将可以用来缓存的数据缓存下来直接响应给客户端的缓存数据,如果缓存中没有

t3用户-角色-权限hibernate经典配置

[java] view plain copy print? 用户-角色-权限hibernate经典配置. [java] view plain copy print? 既然有人问起,我就写下说明吧.在文章中间的配置文件那里.权当回忆一下,也帮助更多人.这是以前学校时写的,没有注释.都是贴的代码笔记.看到的莫要见怪.欢迎学习交流. [java] view plain copy print? [java] view plain copy print? 首先是三个实体类: [java] view pla

使用Java管理Azure(1):基础配置

Azure针对Java开发人员提供了非常丰富的依赖库,开发工具,和相关插件,让你通过Java对Azure进行服务管理和开发,本文第一步先介绍如何快速的配置Java开发工具,主要针对目前比较流行的Eclipse和Intellij IDEA工具. 本文主要是基础配置的介绍,主要分为以下三个部分: 准备Azure的测试账号 准备Eclipse的Azure开发环境 准备Intellij IDEA的Azure开发环境 ? 准备Azure测试账号 首先你需要有Azure中国的测试账号.你可以通过Azure.