01. Hibernate配置文件属性和常见映射元素

Hibernate配置文件属性和常见映射元素

核心配置文件常见配置属性

属性描述
hibernate.connection.driver_class指定数据库的驱动类
hibernate.connection.url指定数据库的URL
hibernate.connection.username指定数据库的用户名
hibernate.connection.password指定数据库的密码
hibernate.dialect指定数据库的方言类
hibernate.show_sql设置为true,程序运行时在控制台输出SQL语句
hibern.connection.datasource指定数据源的JNDI名字

映射文件常见元素

<hibernate-mapping>元素
<hibernate-mapping 
    schema="schemaName"
    default-cascade="cascade_style"
    default-access="field|property|ClassName"
    default-laze="true|false"
    auto-import="true|false"
    package="package.name"
    />
  • schema(可选):数据库schema的名称,表名会加上所指定的schema名字扩展为表的全限定名。

  • default-cascade(可选,默认为none):默认的级联风格。指定了未明确注明cascade属性的Java属性和集合类,Hibernate会采取对应的默认级联风格。

  • default-access(可选,默认为property):Hibernate用来访问属性的策略,可以通过实现PropertyAccessor接口自定义。

    默认property实际上就是通过属性的set和get方法来访问和设置属性。

  • default-lazy(可选,默认为true):延迟加载,指定了未明确注明lazy属性的Java属性和集合类,Hibernate会采取对应的默认加载风格

    延迟加载,例如我们加载一个对象,查询数据表再封装成对象时,我们先仅仅加载数据表的OID到内存,而其他的属性还是在数据库里,只有当我们要获得其他属性时(例如调用get方法)我们再去加载这些信息到内存中。

  • auto-import(可选,默认为true):指定我们是否可以在查询语言中使用非全限定的类名(仅限于本映射文件中的类)。

  • package(可选):指定一个包前缀

    指定后面class pojo类包名前缀,如果不指定前缀,我们需要指定全限定的类名

<class>元素
<class
     name="ClassName"
        table="tableName"
        discriminator-value="discriminator_value"
        mutable="true|false"
        schema="owner"
        proxy="ProxyInterface"
        dynamic-update="true|false"
        dynamic-insert="true|false"
        select-before-update="true|false"
        polymorphism="implicit|explicit"
        where="arbitrary sql where condition"
        persister="PersisterClass"
        batch-size="N"
        optimistic-lock="none|version|dirty|all"
        lazy="true|false"
/>
  • name(可选): 持久化类(或者接口)的Java全限定名。若指明的持久化类实际上是一个接口,也可以被完美地接受。其后你可以用<subclass>来指定该接口的实际实现类名。

  • table: 对应的数据库表名。

  • discriminator-value(辨别值) (可选 - 默认和类名一样):一个用于区分不同的子类的值,在多态行为时使用。可以接受的值包括null和not null

  • mutable(可变) (可选, 默认值为 true): 表明该类的实例可变(不可变)。

  • schema (可选): 覆盖在根<hibernate-mapping>元素中指定的schema名字。

  • proxy (可选): 指定一个接口,在延迟装载时作为代理使用。你可以在这里使用该类自己的名字。

  • dynamic-update(动态更新) (可选,默认为false): 指定用于UPDATE 的SQL将会在运行时动态生成,并且只更新那些改变过的字段。

  • dynamic-insert(动态插入) (可选, 默认为false): 指定用于INSERT的 SQL 将会在运行时动态生成,并且只包含那些非空值字段。

  • select-before-update (可选,默认值为false): 指定Hibernate除非确定对象的确被修改了,不会执行SQL UPDATE操作。在特定场合(实际上,只会发生在一个临时对象关联到一个新的session中去,执行update()的时候),这说明Hibernate会在UPDATE之前执行一次额外的SQL SELECT操作,来决定是否应该进行UPDATE。

  • polymorphism(多形,多态) (可选, 默认值为 implicit (隐式)): 界定是隐式还是显式的使用查询多态。

  • where (可选) 指定一个附加的SQLWHERE 条件,在抓取这个类的对象时会一直增加这个条件。

  • persister (可选): 指定一个定制的ClassPersister。

  • batch-size (可选,默认是1) 指定一个用于根据标识符抓取实例时使用的”batch size”(批次抓取数量)。

  • optimistic-lock(乐观锁定) (可选,默认是version): 决定乐观锁定的策略。

  • lazy(延迟) (可选): 假若设置 lazy=”true”,就是设置这个类自己的名字作为proxy接口的一种等价快捷形式。

Hibernate映射类型

在对象/关系映射文件中,Hibernate采用映射类型作为Java类型和SQL类型的桥梁。Hibernate映射类型分为2种:内置映射类型和自定义映射类型。

内置映射类型

Hibernate对所有的Java原生类型、常用的Java类型如String、Date等都定义了内置的映射类型。下列表列出了Hibernate映射类型、对应的Java类型以及对应的标准SQL类型。

注意大小写!!!









































































Hibernate映射类型Java类型标准SQL类型大小
integer/intjava.lang.Integer/intINTEGER4字节
longjava.lang.Long/longBIGINT8字节
shortjava.lang.Short/shortSMALLINT2字节
bytejava.lang.Byte/byteTINYINT1字节
floatjava.lang.Float/floatFLOAT4字节
doublejava.lang.Double/doubleDOUBLE8字节
big_decimaljava.math.BigDecimalNUMERIC
characterjava.lang.Character/java.lang.String/charCHAR(1)定长字符
stringjava.lang.StringVARCHAR变长字符
boolean/ yes_no/true_falsejava.lang.Boolean/BooleanBIT布尔类型
datejava.util.Date/java.sql.DateDATE日期
timestampjava.util.Date/java.util.TimestampTIMESTAMP日期
calendarjava.util.CalendarTIMESTAMP日期
calendar_datejava.util.CalendarDATE日期
binarybyte[]BLOB

BLOB
textjava.lang.StringTEXTCLOB
serializable实现java.io.Serializablej接口的任意Java类BLOBBLOB
clobjava.sql.ClobCLOBCLOB
blobjava.sql.BlobBLOBBLOB
classjava.lang.ClassVARCHAR定长字符
localejava.util.LocaleVARCHAR定长字符
timezonejava.util.TimeZoneVARCHAR定长字符
currencyjava.util.CurrencyVARCHAR定长字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值