zoukankan      html  css  js  c++  java
  • hibernate常用配置

    核心配置

      核心配置有两种方式进行配置
        1:属性文件的配置:hibernate.properties
        格式:key=value
          hibernate.connection.driver_class=com.mysql.jdbc.Driver
        注意:没有办法在核心配置文件中加载映射文件.(必须手动编码的方式进行加载.)

        2:XML格式文件配置:hibernate.cfg.xml
          格式:<property name="hibernate.connection.username">root</property>

      核心配置中
        1.必须的配置
          连接数据库4个基本参数:
            hibernate.connection.driver_class 连接数据库驱动程序
            hibernate.connection.url 连接数据库URL
            hibernate.connection.username 数据库用户名
            hibernate.connection.password 数据库密码

          Hibernate的方言:
            hibernate.dialect 操作数据库方言

        2.可选的配置
          hibernate.show_sql true 在控制台上输出SQL语句
          hibernate.format_sql true 格式化控制台输出的SQL语句
          hibernate.connection.autocommit true 事务是否自动提交
          hibernate.hbm2ddl.auto create/create-drop/update/validate
            create :每次执行的时候,创建一个新的表.(如果以前有该表,将该表删除重新创建.) 一般测试的时候的使用.
            create-drop :每次执行的时候,创建一个新的表,程序执行结束后将这个表,删除掉了. 一般测试的时候使用.
            update :如果数据库中没有表,创建一个新的表,如果有了,直接使用这个表.可以更新表的结构.
            validate :会使用原有的表.完成校验.校验映射文件与表中配置的字段是否一致.不一致会报错.

        3.映射的配置
          在XML格式配置文件中加载映射文件:
            <mapping resource="cn/itcast/hibernate3/demo1/Customer.hbm.xml" />

    映射文件的配置
      ORM:对象关系映射(Java对象与数据库表的映射)
      配置类与表的映射
        name:类的全路径
        table:表的名称(可以省略的.若省略使用类的名称作为表名.)
        <class name="cn.yzu.hibernate3.demo1.Order" table=”orders”>

      配置普通属性与字段映射
        <property name="name" column="name" type="string" length=”20”/>
          type:三种写法
            Java类型 :java.lang.String
            Hibernate类型 :string
            SQL类型 :不能直接使用type属性,需要子标签<column>
              <column name="name" sql-type="varchar(20)"/>

      配置唯一标识与主键映射
        一个表中只有一个主键的形式:<id name=”id” column=”id”>

          主键:自然主键和代理主键

            自然主键:
              创建一个人员表.人员表中某条记录唯一确定.如人都有身份证号.我们可以使用身份证号作为主键.(身份证号本身就是人员的一个属性.作为主键.)

            代理主键:
              创建一个人员表.人员表中某条记录唯一确定.但是没有使用身份证号作为主键,新建字段(用新建的字段作为主键.只是一个标识作用.)

            尽量要Hibernate自己去维护主键,尽量使用代理主键,因为如果我们使用自然主键如身份证号,万一有一天自然主键要参与业务逻辑,比如身份证号要发生修改,那么会非常麻烦。
          主键的生成策略:
            increment :自动增长.适合 short int long...不是使用数据库的自动增长机制.使用Hibernate框架提供的自动增长方式.
                插入数据时,先发送一条语句:select max(id) from 表; 在最大值的基础上+1再插入数据.(存在多线程的问题)在集群下不能使用

            identity :自动增长.适合 short int long...采用数据库的自动增长机制.不适合于Oracle数据库
            sequence :序列.适用于 short int long ... 应用在Oracle上 
            uuid :适用于字符串类型的主键.采用随机的字符串作为主键.
            native :本地策略.底层数据库不同.自动选择适用identity 还是 sequence
            assigned :Hibernate框架不维护主键,主键由程序自动生成.
            foreign :主键的外来的.(应用在多表一对一的关系.)

        一个表对应多个主键形式:(复合主键)---了解即可,用的很少:<composite-id></composite-id>,例如:
              

                                        

      命名SQL(配置后,可在Java代码中通过直接获取配置的名字而获得数据库语句)

    <query name="findAll">
      from Customer
    </query>
    
    <sql-query name="sqlFindAll">
      select * from customer
    </sql-query>
  • 相关阅读:
    hadoop学习笔记(一):hadoop集群搭建
    CITA 快速入门
    Oracle数据库常用十一大操作指令
    Shutdown Abort :亚马逊成功迁移物流业务中最后一个Oracle数据库
    从B站源码泄露事件入手,说一下团队协作中版本管理的安全意识
    Docker三剑客:Compose、Machine和Swarm
    TensorFlow学习笔记之图像大小调整(最全可运行的代码)
    面试Python工程师,这几道编码题有必要背背,Python面试题No8
    WFP之位图效果
    使用ScriptX控件进行Web横向打印
  • 原文地址:https://www.cnblogs.com/fengmingyue/p/6165774.html
Copyright © 2011-2022 走看看