天天看点

Hibernate的核心对象关系映射

Hibernate的核心就是对象关系映射:

加载映射文件的两种方式:   第一种:<mapping resource="com/bie/lesson02/crud/po/employee.hbm.xml"/>   第二种://便于测试,会自动加载映射文件:employee.hbm.xml        private static SessionFactory sf;           static{               //加载主配置文件,并且创建session工厂              sf = new Configuration()                       .configure()                       .addClass(Employee.class)                       .buildSessionFactory();           }

  1:第一掌握映射文件的书写:

    <hibernate-mapping package="com.bie.po"> </hibernate-mapping>

  2:第二掌握如何映射某一个对象,以及class里面主键和普通字段的设置。

    <class name="User" table="user"></class>

    2.1:主键映射

       2.1.1:单列主键映射

<generator class=""></generator>   主键映射:id             主键生成策略:                  identity:自增长(mysql,db2)                  native:自增长[会根据底层数据库自增长的方式选择identity或者sequence]                          如果是mysql数据库,采用自增长的方式是identity                          如果是oracle数据库,使用sequence序列的方式是先自增长                             sequence:自增长(序列),oracle中自增长是以序列方法实现                  increment:自增长,一般不用(会有并发访问的问题,一般在服务器集群环境使用会存在问题)                  assigned:指定主键生成策略为手动指定主键的值                  uuid:指定uuid随机生成全球唯一的值                      foreign:(外键的使用,one-to-one的时候使用)         

       2.1.2:多列作为主键映射

(1)如果找不到合适的列作为主键,除了用id列,我们一般使用联合主键,即多列的值作为一个主键,从而保证记录的唯一性。 (2)联合主键的创建:    create table person2(         name VARCHAR(20),         age INT,         sex VARCHAR(5),         PRIMARY key(name,age)    )         
Hibernate的核心对象关系映射
(3)创建一个实体类存放两个主键作为属性,并且实现set和get,并且必须实现可序列化;    之后这个实体类和数据表中非两个主键的字段构成一个新的实体类,并且实现set和get方法,    <class name="非两个主键字段创建的实体类的类名">       <!-- 复合主键映射 -->            <composite-id name="两个主键创建的实体类new的对象名称">                  <key-property name="第一个主键的名称" type="主键字段的类型"></key-property>                  <key-property name="第二个主键的名称" type="主键字段的类型"></key-property>            </composite-id>     </class>           

    2.2:普通字段映射:property

              name:指定对象的属性名称;

              column:指定对象属性对应的表的字段名称,如果不写默认与对象属性一致 ;    

              length:用于指定字符类型长度,比如字符串类型varchar(20),默认长度255;

              type:用于指定表的字段的类型,如果不指定,会匹配属性的类型,包含两种类型;

                     java类型:必须写全名,比如java.lang.String,java.util.Date

                     hibernate类型:比如string,date,都是小写,不能写String(不能首字母大写)

      注意:property的column属性的值不能是sql语句的关键字,比如desc关键字做描述的时候,如果非要使用,

            可以使用``(shift+~)反引号,不然就要改列名;

格力,掌握核心科技,让消费者爱上中国造!!!

Hibernate,掌握映射核心知识,让老板给你升职加薪!!!~..~

 最后讲解一下如何查看Hibernate的api哦,很实用的哦~..~

Hibernate的核心对象关系映射