再讲*.hbm.xml文件其中的各个节点

  前边我们详细的又讲述了一遍hibernate.cfg.xml的功能,即主要记录了连接数据库、HIbernate本身的信息、c3p0的信息、加载hbm.xml的信息这四种的功能。

  下边我们来详细的说一说hbm.xml的这个配置文件的功能和作用。

  1.hbm.xml文件

  一个这种类型的文件代表一个映射关系文件,可以将一个Java类和数据库表来映射起来。HIbernate框架可以理解这种关系并且在运行程序时根据这种映射关系生成相应的SQL语句。

  2 <hibernate-mapping>节点

  这个节点有一个属性package可以指明下边用到的类在哪个包下,这样在下边用到的类class属性就可以直接类名而不必写全类名了。

  3.<class>节点

  这个节点代表指定类和数据库中表之间的对应关系

  dynamic-insert属性代表根据Java类来动态的插入SQL,即只插入那些非空的字段。

  dynamic-update属性代表动态的根据Java类来更新数据,即只更新那些字段发生变化的字段。

  select_before_update这个属性可以自动检查游离状态的对象是否和数据库中的记录一致,若一致,则不发送SQL语句,若不一致,再发送SQL语句。

  4.<id>

  这个节点是一个相对重要的节点,他可以映射对象标识符,Hibernate使用对象标识符来建立内存中的对象和数据库中记录之间的对应关系。对象的OID和数据库中记录的主键相对应。对象标识符只能使用int,long,short的类型来表示。

  而且在这个对象表示符id中还可以指定对象标识符的生成方式,即id节点的子节点generator中的属性class来指定,指定方式有以下几种:

  ① increment:HIibernate框架来以递增的方式来为代理主键赋值。具体方式是Hibernate先从数据库中找出最大的主键值,再次基础上+1再赋值给当前对象的主键。

  ② identity:底层数据库以递增的方式来生成主键标识符,要求底层数据库把主键定义为自动增长类型。适用于Mysql,DB2,Sqlserver,Mybatis,不适用于Oracle因为无法设置成自增

  ③ sequence:底层数据库提供序列来生成主键标识符。Hibernate在生成主键标识符前会先从数据库中的news_seq中拿取一个唯一的标识符,然后将其作为主键值。适用于DB2和Oracle因为只有他们有序列

  ④ hilo:Hibernate按照一种高低算法生成标识符。Hibernate会先从数据库中的特定表中Next_Value取出一个值并根据高低算法生成一个值作为主键。它适用于任何一个数据库因为它并不依赖数据库

  ⑤ native:代表生成主键的方式是按照具体的数据库的存在策略而制定,本地化和跨平台的,它会依据具体的数据库的自增identify-序列sequence-hilo这三种生成策略来生成主键。

  5.<propertyt>

  这个节点会映射除OID以外的其他的Java对象的属性和数据库中的表格除主键意外的字段来映射。

  ① access:这个属性指定获取Java对象的方式,是setter/getter还是反射(field)。

  ② column:指定数据库中对应Java属性的字段

  ③ type:指定Java对象类型和数据库字段类型的映射规则是一种Hibernate的映射规则可以直接写Java属性类型的全类名,也可以写Hibernate的映射规则的类型

  ④ unique:指定这个column是否是唯一的

  ⑤ update:指定这个column是否是可以修改的

  ⑥ index:指定这个column具有的索引名称

  ⑦ length:指定这个column的长度

  ⑧ formula:很重要,设置一个SQL表达式,Hibernate将根据他计算派生属性的值。

  派生属性:有时并非所有的持久化类的属性都直接和标的字段相匹配,持久化类有些属性的值必须在运行时通过计算才可以算出从而对应到数据库中的字段。

  格式:formula="(sql)",sql表达式中的列名和表名都是和数据库中相一致的,而不是和Java对象的属性名称一致。若是需要在sql中使用参数,则可以使用where n.id=id,id表示参数,表示和当前Java类属性对应的数据库中的字段的值

  ⑨scale:表示Java对象的属性对应的数据库中的字段的小数位数。适用于double,float,decimal等数据库类型。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值