hibernate-基础配置-3

本文详细介绍了Hibernate配置文件中的hbm2ddl.auto选项及其作用,包括创建、更新和删除数据库表的操作。此外还讲解了如何搭建日志环境来显示DDL语句,并深入探讨了通过注解和XML进行类与表之间的映射方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hibernate.cfg.xml中

hbm2ddl.auto

1.validate
创建时校验
2.update
xml或annotation和数据库中表不同时,hibernate帮助更新数据库
3. create (常用)
hibernate帮助创建表(会覆盖数据)
4. create-drop
create-drop:当session关闭时,hibernate会删除表

搭建日志环境,显示ddl语句

slf4j是日志的框架,可以用slf4J自己的实现、log4j、jdk logging api、apache commons-logging去实现

需要的jar包及对应pom.xml配置:
1. slf4j-api-1.5.8.jar 这个是hibernate自带的jar
2. 需要dom4j的实现类,因为slf4j本身的实现类不是很流行

  <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
      </dependency>

3.需要将slf4j-api和dom4j实现类连接起来的jar,该场景属于适配器模式

<dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.7.25</version>
</dependency>

4.把log4j.properties添加到maven-resouce文件中
log4j.properties例子文件到哪里取:可官网下载
hibernate-distribution-3.3.2.GA.jar包,在目录\project\etc中可找例子

5.可正常打印日志

show_sql

format_sql

类名和表明(即不相同时)怎样对应映射

如果table的name在idea中报错,则要在idea中把数据源配置上
在annotation中

@Entity
@Table(name="_Teacher")
public class Teacher {...}

在xml文件中

<class name="Student" table="_Student">

字段名和属性名相同

xml中,如果不配置字段,则该字段和数据表不存在对应关系
annotation方便一些,只需要给主键配置@Id,其他的字段默认映射(相当于字段名和数据库名字一样)
可以参考文档中的说明:
hibernate-annotations-3.4.0.GA\doc\reference\zh_cn\html

字段名和属性名不同

在annotation中

@Column(name = "_name")
    public String getName() {
        return name;
    }

在xml文件中

<property name="name" column="_name"/>

不需要持久化的字段

在annotation中

    @Transient
    public String getYouWifeName() {
        return youWifeName;
    }

在xml文件中
不写该字段就行

时间和日期类型

对于Date类型字段
annotation中,默认既保存日期又保存时间,若想只保存其中一个,可

@Temporal

xml中

在properties中配置type即可,大多数情况没必要配hibernate的type,默认即可

映射枚举

使用annotation比较简单

public enum ZhiCheng {
    A,B,C;
}
//    @Enumerated(EnumType.STRING)  数据库中存A(当作字符串)
    @Enumerated(EnumType.ORDINAL) // 数据库中存0(当作数组下标值)
    public ZhiCheng getZhicheng() {
        return zhicheng;
    }

自定义类型(不重要)

字段的位置

annotation写在get方法上较好,写在field上会破坏java面向对象的封装性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值