Hibernate基础配置文件

来源:互联网 发布:淘宝客服主管培训课程 编辑:程序博客网 时间:2024/06/10 05:58

Hibernate配置文件

1.快捷方式

2.持久化对象

1.1规则

  1. 提供一个无参数 public访问控制符的构造器
  2. 提供一个标识属性,映射数据表主键字段
  3. 所有属性提供public访问控制符的 set get 方法(javaBean)
  4. 标识属性应尽量使用基本数据类型的包装类型
  5. 不要用final修饰实体 (将无法生成代理对象进行优化)

1.2持久化对象的唯一标识

Hibernate使用OID来建立内存中的对象和数据库中记录的对应关系

结论: 对象的OID和数据库的表的主键对应。为保证OID的唯一性,应该让Hibernate来为OID付值

1.3区分自然主键和代理主键

  • 主键需要具备: 不为空/不能重复/不能改变
    1. 自然主键: 在业务中,某个属性符合主键的三个要求.那么该属性可以作为主键列.
    2. 代理主键: 在业务中,不存符合以上3个条件的属性,那么就增加一个没有意义的列.作为主键.

1.2基本类型和包装类型

  1. 基本数据类型和包装类型对应hibernate的映射类型相同
  2. 基本类型无法表达null、数字类型的默认值为0。
  3. 包装类默认值是null。当对于默认值有业务意义的时候需要使用包装类。

1.2类型对应表


2.hibernate.cfg.xml配置文件

  • property元素
    取值:

        hibernate.connection.driver_class:数据库连接驱动       hibernate.connection.username:    数据库连接名       hibernate.connection.password:     数据库连接密码       hibernate.connection.url:                数据库连接串       show_sql:                                            控制台打印sql语句       format_sql:                                        打印sql语句时是否格式化sql语句       hibernate.connection.autocommit     :事务自动提交        hibernate.current_session_context_class : 将Session与线程绑定=> 只有配置了该配置,才能使用getCurrentSession       hbm2ddl.auto:                                 生成表结构策略          --查看值可以在hibernate.properties中找到   

hbm2ddl.auto 取值:
update:(最常用的取值): 如果当前数据库中不存在表结构,那么自动创建表结构.
如果存在表结构,并且表结构与实体一致,那么不做修改
如果存在表结构,并且表结构与实体不一致,那么会修改表结构.会保留原有列.
create:(很少):无论是否存在表结构.每次启动Hibernate都会重新创建表结构.(数据会丢失)
create-drop: (极少): 无论是否存在表结构.每次启动Hibernate都会重新创建表结构.每次Hibernate运行结束时,删除表结构.
validate(很少):不会自动创建表结构.也不会自动维护表结构.Hibernate只校验表结构. 如果表结构不一致将会抛出异常.
hibernate.dialect:方言配置 –查看值可以在hibernate.properties中找*org.hibernate.dialect.MySQLDialect (选择最短的)

  • 引入ORM映射文件:填写src之后的路径
    <mapping resource="com/itheima/a_hello/User.hbm.xml"/>


3.User.hbm.xml

3.1 class

class: 配置实体与表的关系
name : 填写实体的完整类名
table: 与实体对应表的名称
dynamic-insert:动态插入 默认值是false
true=>如果字段值为null,不参与insert语句
* dynamic-update*:动态更新 默认值”false”
true=> 没改动过的属性,将不会生成到update语句中

3.2 id

id: 配置实体与表中 id对应
name: user对象中标识主键的属性名称
column: 主键在表中的列名
length: 列的数据长度
unsaved-value(不常用): 指定主键为什么值时,当做null来处理.
access(强烈推荐不要用):field 那么在操作属性时,会直接操作对应的字段而不是get/set方法

`<id name="id" column="id" length="255"   >`        <!-- generator:主键生成策略                1.increment  数据库自己生成主键. 先从数据库中查询最大的ID值,将ID值加1作为新的主键                2.identity  依赖于数据的主键自增功能                3.sequence  序列,依赖于数据中的序列功能(Oracle).                4.hilo(纯了解,永远用不到) : Hibernate自己实现序列的算法,自己生成主键. (hilo算法 )                5.native 自动根据数据库判断,三选一. identity|sequence|hilo                6.uuid  生成32位的不重复随机字符串当做主键                7.assigned 自己指定主键值. 表的主键是自然主键时使用.         -->        <generator class="uuid"></generator></id>   

3.3 property

`<!-- property : 实体中属性与表中列的对应         name : 实体中属性名称         column : 表中列的名称         length : 数据长度         precision: 小数点后的精度````         scale: 有效位数         insert(一般不用): 该属性是否加入insert语句.         update(一般不用): 该属性是否加入update语句.         not-null : 指定属性的约束是否使用 非空         unique : 指定属性的约束是否使用 唯一     -->

`

0 0
原创粉丝点击