欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ORM

程序员文章站 2022-06-20 12:15:19
...

坚持每天写博文,积累下开发中的点点滴滴
- ORM:对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换,可以理解为对象到关系型数据库的映射
- ORM框架java对象和数据库一一对应关系
ORM

  • 问题:java对象是怎么样变成数据库里面的表记录的?
    通过xxx.hbm.xml

  • 映射文件中有表中所需的必要数据,可不可以让hibernate自动建表?
    答案是可以,可以在配置文件中新增一个配置

  <property name="hbm2ddl.auto">create-drop</property>
  • 当属性值是create-drop时,运行保存方法结果为:

//hibernate启动,检测是否有同名表,如果有删掉
Hibernate: drop table if exists user
//创建表,长度等使用默认
Hibernate: create table user (user_id bigint not null auto_increment, user_name varchar(255), user_passWord varchar(255), primary key (user_id))
//执行保存操作
Hibernate: insert into user (user_name, user_passWord) values (?, ?)
//hibernate关闭,删掉该表
Hibernate: drop table if exists user
细究之,是sessionFactory的创建和关闭时创建和删除表。
ORM
当我把sessionFactory关闭的代码注释掉以后,hibernate并没有进行删除表操作

  • 当属性值是create时,跟create-drop相比只是在最后不删表
    注意:此时更改数据不能成功,因为每次都是重新建表,更新方法找不到需要更新的数据,create这种一般只会在单个数据测试的时候用一下。
    注意:会出现有删除表信息实际却没有删掉,因为有主外键关联

  • 当属性值是update时,如果表不存在就创建表,操作完成以后数据存在且支持修改,一般在多个测试方法时测试使用,或者在web测试时使用。
    注意:我在映射文件里面注释掉一个字段,结果是被注释的字段不消失(长度等属性也不会更改),但是再添加数据时没有此字段
    注意:hibernate的domain层的字段一定要使用封装类型不能使用基本类型

  • 以字段方式操作,此时在domain需要给此字段一个固定值。
 <!--   <property name="age" column="age" access="field"></property> -->
  • 当属性值是validate是用来验证的,当不希望映射文件改动表的结构的时候使用。别人给了一个sql文件,即表已经存在的时候验证使用。但是映射不匹配的时候会报错
相关标签: orm