Hibernate

来源:互联网 发布:主流数据库 对比 编辑:程序博客网 时间:2024/06/11 00:55

hibernate是javaweb开发中 的框架之一,工作在持久层

hibernate让java程序员在编程过程中,尽可能的摆脱对数据库的直接操作,避免编写sql语句,因为当数据库中表过多,字段过多(几十个,几百个字段),程序员的插入和修改的操作既简单有繁琐。

为了更加高效的做开发,hibernate把对数据库的操作都封装成对象,让程序员们完全面向对象编程,不尽效率高,让我们更加爱上编程,因为编程不是做无趣的事情,而是做有意义的事情


首先hibernate是如何把数据库封装成对象让我们操作的呢?


(一).hibernate中定义一个javabean类(什么是Javabean呢?就是一个一般的Java类,没有特殊的操作方法,只有属性和set/get方法和构造)

但是hibernate这里的javabean类唯一不同的是在编写上有一定的限制:


javabean + 映射文件
编写规范:
必须是一个公共的具体的类(public class)
必须有一个无参构造器
字段私有,必须提供公共的访问字段的方法(get和set)
必须有一个oid属性和主键对应(这里是类和表对应)
字段尽量使用包装类修饰
类尽量不要使用final修饰(若使用final修饰,load方法和get一样了)

hibernate使用配置文件让javabean和数据库的表对应(注意:这个表只是我们需要的表,数据库里面可以没有,因为创建表这个粗活hibernate可以自己做)


(二)上面说了对象映射给表,也就是这里操作对象就是操作表,所以就把sql操作编程了 操作对象。

下面来讲讲怎么想操作表一样操作对象(多表操作,单表明天讲,因为今天的内容比较多,我先讲一下,防止明天忘了)

1.实体之间的关系和设计

hibernate中的一对多

①什么叫一对多,怎么通过对象实现一对多

一对多就是一个表的一条记录可以指向另一个表的多条记录,比如用户和订单:一个用户可以有多个订单,但是一个订单只能是某一个用户的。

hibernate中实现对象(实体)的一对多;在一的一方的类中添加一个集合来保存多的一方的对象

在多的一方的类中添加一个一的一方的对象就实现了一对多(但是要在配置文件中做一定的配置)

2.级联

具有方向性  操作主体 的时候,将其关联的对象进行相同的操作

级联保存更新

在主体的xml文件中配置cascade="save-update"

级联删除

在主体上配置cascade="delete"

默认删除

删除已被引用的一的一方

先把从表中指定的外键置为null  在删除主表中的记录

3.冗余sql

当保存对象的时候,执行插入语句,之后还会执行update语句,虽然不影响结果,但是这个多余的update语句影响效率,所以可以在一的一方放弃外键维护权,set标签上inverse="true".





今天先说到这,太晚了。。。。。。未完待续



原创粉丝点击