知识大全 Hibernate ORM 对象-关系 映射
Posted 类型
篇首语:千磨万击还坚劲,任尔东西南北风。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Hibernate ORM 对象-关系 映射相关的知识,希望对你有一定的参考价值。
Hibernate ORM 对象-关系 映射 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Hibernate的持久化类使用的是JavaBean的风格 为要被访问的属性提供了一套get和set方法 这两个方法也叫做持久化类的访问方法 记得曾经在接触JavaBean的时候我很迷糊 总觉得提供这两个方法 倒不如把Bean的属性设置public 然后直接调用对象 属性 这样来的方便 但是后来 有一个这样的需求 就是一个人名字可以被查看 但是不可以修改 这个时候如果用set方法的话 只需要把set方法的修饰符换为private就OK了 如果是用对象 属性的形式调用就麻烦了 而且最重要的一个有点是JavaBean的风格可以简化Hibernate通过JAVA反射机制来获得持久化类的访问方法的过程 至于JAVA的反射机制我也是了解一些皮毛 据说很深奥 有兴趣的朋友可以Google一下 有一点值得注意 就是JAVA应用程序不能访问JavaBean持久化类的private类型的get set方法 而Hibernate没有这个限制 可以访问所有的级别 包括private default protected public Java有 种基本类型:byte short char int long float double boolean 还有 种与之对应的包装类型 Byte Short Character Integer Long Float Double Boolean包装类型就是把基本类型包装成对象的意思 基本类型于包装类型之间可以方便的转换 例如: int i = ; Integer ie = new Integer(i);//基本类型转换成包装类型 i = ie intValue();//包装类型转化成基本类型
注意 直接转换也是可以的 例如i = ie; JAVA会自动把包装类型转换成基本类型 或者ie = i; JAVA会自动把基本类型转换成包装类型 在持久化类中 既可以把属性定义为基本类型 也可以定义为包装类型 他们对应的Hibernate映射类型int和Integer都对应int类型 这个表示不是很明显 在用JAVA对象类型字符串举例String 数据库是varhcar( ) 在hibernate的* hbm xml映射文件里一律写为string 其实使用基本类型或者包装类型来定义持久化类中的属性是各有优缺点的 基本类型就是使用方便 简单 在需要数字运算的时候直接可以运算 而包装类型就要麻烦的先转换成基本类型 然后在进行运算 但是包装类型的优点在于能表达null值 每一个包装类型的对象创建的时候默认值都是null类型的 而基本类型是不可以表达null的 它们的默认值是 为什么要表达null值呢 因为SQL中 所有类型的数据 默认值都是null的 当进入insert的时候 没有复值的属性 默认值就是null 所以说JAVA的包装类型和数据库之间的对应关系更直接 这里建议Hibernate的OID设置为包装类型 其他的属性就根据业务需要和个人习惯来定吧 Hibernate在初始化阶段会根据映射文件的信息 为所有的持久化类预定义insert语句 update语句where ID delete语句where ID select语句where ID 这里所说的语句就是标准的SQL增 删 改 查 语句 参数用?代表JDBC PreparedStatement中的参数 这里就不举例了 这些SQL语句都存放在SessionFactory的缓存中 当执行Session的save() update() delete() load()方法时 将会从SessionFactory的缓存中读取这些预定义的SQL语句 在把具体的参数值绑定到SQL语句中 这就是Hibernate的基本原理 在默认的情况下这些语句表达的是所有的字段 当然Hibernate还允许我们在映射文件里控制insert和update语句的内容 比如在映射文件中<property 元素中的update属性设置成为false 那么这个字段 将不被包括在基本的update语句中 修改的时候 将不包括这个字段了 insert同理 dynamic动态SQL语句的配置也是很常用的 下面介绍配置SQL语句的具体属性: )<property>元素 insert属性:设置为false 在insert语句中不包含这个字段 表示永远不会被插入 默认true )<property>元素 update属性:设置为false 在update语句中不包含这个字段 表示永远不会被修改 默认true )<class>元素 mutable属性:设置为false就是把所有的<property>元素的update属性设置为了false 说明这个对象不会被更新 默认true )<property>元素 dynamic insert属性:设置为true 表示insert对象的时候 生成动态的insert语句 如果这个字段的值是null就不会加入到insert语句当中 默认false )<property>元素 dynamic update属性 设置为true 表示update对象的时候 生成动态的update语句 如果这个字段的值是null就不会被加入到update语句中 默认false )<class>元素 dynamic insert属性:设置为true 表示把所有的<property>元素的dynamic insert属性设置为true 默认false )<class>元素 dynamic update属性:设置为true 表示把所有的<property>元素的dynamic update属性设置为true 默认false
cha138/Article/program/Java/ky/201311/28783相关参考
知识大全 高级java工程师-------hibernate的作用和关键点
一在ssh框架中hibernate的作用是什么呢? hibernate是一种ORM(对象映射)框架的持久性框架它是对JDBC做了轻量级的封装使得程序员可以面向对象思维的对数据库进行操作 支持各
Hibernate各种映射关系总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 多对一 第一
精通Hibernate之映射继承关系八 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 由于关系数
精通Hibernate之映射继承关系(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 把每个
精通Hibernate之映射继承关系(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在域模
精通Hibernate之映射继承关系三 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! <h
精通Hibernate之映射继承关系二(图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 把每
精通Hibernate之映射继承关系四(图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这种
精通Hibernate之映射继承关系七(图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Co
作为开源的Orm对象映射框架ibatis是一个线程安全学习容易但是开发相对于hibernate来说的话就要繁锁些没有很好的工具支持ibatis所有的配置几乎是通过手写这样增加了开发者的难度好啦言归