hibernate.hbm.xml详解(二)

本文深入解析Hibernate中的对象标识符与主键生成策略,详细介绍了<hbm.xml>中<id>和<property>元素的使用,包括标识符生成器、属性映射类型、索引、唯一约束等配置选项,以及派生属性的处理方法。
摘要由CSDN通过智能技术生成

接着(一)

3:  <id>

   **** hibernate 使用对象标识符(OID)来建立内存中的对象(eg:一个对象实例,一条数据库记录)和数据库表中记录的对应关系,对象的OID和数据表的主键对应,HIbernate通过标识符生成器来为主键赋值

       推荐在数据表中使用代理主键(不具备业务含义的字段)代理主键通常为整数类型,因为整数类型比字符串类型要节省更多的数据库空间

        在对象-关系映射文件中,<id>元素用来设置对象标识符,<generator>子元素用来设定标识符生成器。

        hibernate提供了标识符生成器接口:IdentifierGenerator,并提供了各种内置实现,一般直接用实现就行,自己不去定义实现这个接口;

  generator 详细见主键生成策略

4:<property>

       ---name:持久化类的属性名

      ---column:列名数据库的字段名,若没设置,属性名就是字段名

      ---type:hibernate映射类型(可达到精确映射);是java类型与sql类型的桥梁,若没设置,hibernate会运用,反射机制先识别出持久化类的特定属性的java类型,然后自动使用与之对应的默认的hibernate映射类型

      ---index:为此字段添加索引

      ---not-null:是否允许为空

      ---access:hibernate的默认属性访问策略;默认值为property(即使用getter,setter方法来访问属性);若指定field,则hibernate会忽略getter/setter方法,而通过反射访问成员变量

      ---unique:是否为该属性的所映射的数据列添加唯一约束

      ---update:该字段是否可以被修改(通过测试才可拿得到)

      ---length:长度

      ---formula:用来设置sql表达式的,hibernate将根据它来计算出派生属性的值

      ---派生属性:并不是持久化类的所有属性都直接和表的字段匹配,持久化类的有些属性的值必须在运行时通过计算才能得出来

****使用formula="(sql)"的英文括号不能少

****Sql表达式中的列名和表名都应该和数据库对应,而不是和持久化对象的属性对应

****如果需要在formula属性中使用参数,这直接使用where cur.id=id形式,其中

     id就是参数,和当前持久化对象的id属性对应的列的id值将作为参数传入

  ****如果映射文件的property里的type是日期类型那么可选三种

《在java中代表时间和日期的类型包括:java.util.Date,java.util.Calendar;

     在JDBC API 中还提供了3个扩展了java.util.Date 类的子类:

        (1):java.sql.Date,(2)java.sql.Time,(3)java.sql.Timestamp

         这三个类分别和标准sql类型中的DATE(日期),TIME(时间)和TIMESTAMP (时间戳,同时包含日期和时间信息)类型对应

     正因为java.util.Date是其他三个的父类,所以java.util.Date 可以对应标准sql中的DATE,TIME和TIMESTAMP,所以持久化类的Date类型设置为java.util.Date

那如何来映射成date.time.timestamp?


(以上不是sql,也不是java,而是hibernate映射类型)



      


                

                  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值