java,
java,
hibernate基础
hibernate:是一个开发源代码的对象的关系映射框架
jdbc的缺点:(1)开发效率低
(2)代码冗余
(3) 重复性工作多
持久化就是将程序中数据在瞬时状态中和持续状态间转换的机制.
jdbc就是一种持久化机制,将程序数据直接保存成文本文件也是持久化机制的一种实现,但常用的是讲程序数据保存到数据库中,在分层结构中,Dao层有时候也被称为持久化层,因为这一层主要工作是讲数据保存到数据库中或者把数据库中的数据读取出来!!
在编写程序的时候,一面想对象的方式处理数据,保存数据的时候,却以关系型数据库的方式存储,客观上我们需要一种能在两者中国进行转换的机制,这样的机制就是ORM(对象关系映射)
ORM就是通过描述对象和数据库之间的映射,自动的把java应用程序中的对象持久化到关系数据库中的表
ORM解决方案包含下面的四个部分
在持久化对象上执行增删改查的API
用于对持久化对象或者属性查询的一种语言或者API
用于实体关系映射的工具
能够于事务对象交互,执行检查,延迟加载以及其他优化的功能
Hibernate是一个完全ORM工具,提供了ORM解决方案的四个部分
hibernate配置文件主要用于配置数据库连接和hibernate运行时所需要的各种属性
dialect参数:用于配置不同的数据库类型
current_session_context_class参数:指定当前Session范围和上下文.
创建实体类和实体映射文件
首先要定义用户实体类,也成持久化类,需要是想java.io.Serializable接口,添加默认的构造方法
通常作为实体类的java类都是POJO
POJO:是一个不包含逻辑代码的对象,不但当任何特殊的角色,也不是实现特殊的java框架接口,从数据层面上来看,POJO作为数据实体对象化表现形式.
hibernate操作数据库
读取并解析配置文件Configuration conf=new Configuration().configure();
读取并解析映射文件创建SessionFactory
SessionFactory sf=conf.buildSessionFactory();
打开Session
Session session=sf.openSession();
开启一个事务:
Transaction tx=session.beginTransacction();
数据的操作
session.save(User);
提交事务(回滚事务)
tx.commit();
关闭session
session.close();
根据面向对象的语义:删除操作的方法的参数理所应当是讲要删除的对象,而不是主键.
object get(Class clazz,Serizlizable id)通过实体类Class对象和ID加载数据
object load(Class theClass,Serializable id);通过实体类Class对象和Id加载数据:
两个的区别:get方法如果加载的数据不存在时,get方法返回一个null,而load方法加载的数据不存在时,系统会抛异常(ObjectNotFoundExeception)
Hibernate中实现对象的三种状态
瞬时状态:在使用进行持久化操作前,实例化User对象,此时,User对象冰未于数据库中的数据有任何的关系,这是User对象的状态为瞬时状态(Transient);
持久状态:当使用Session的get方法或者load方法的时候加载一条数据,返回User对象于数据库中的一条数据关联,此时对象为持久状态.(persistent)
游离状态:数据库中有一条数据但是对象并为收到Session实例的管理,所以此时的User对象处于游离状态(Detached)
处于游离状态对象昂通过Session的update方法再次于session的实例相关联后,就是有游离状态转换为持久状态,er对于持久状态的对象通过delete方法删除后,该对象的状态不是 游离状态而是瞬时状态,因为此时该对象没有于任何的数据库数据关联
相关文章
- 暂无相关文章
用户点评