dede网站地图xml,扬州网页设计培训,线上推广方案模板,织梦商城模板1.Hibernate框架简述 Hibernate的核心组件 在基于MVC设计模式的JAVA WEB应用中#xff0c;Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中…1.Hibernate框架简述 Hibernate的核心组件 在基于MVC设计模式的JAVA WEB应用中Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中的数据库然后通过操作PO对数据表中的数据进行增删改查等操作。 除配置文件映射文件和持久化类外Hibernate的核心组件包括以下几部分 a)Configuration类用来读取Hibernate配置文件并生成SessionFactory对象。 b)SessionFactory接口产生Session实例工厂。 c)Session接口用来操作PO。它有get(),load(),save(),update()和delete()等方法用来对PO进行加载保存更新及删除等操作。它是Hibernate的核心接口。 d)Query接口用来对PO进行查询操。它可以从Session的createQuery()方法生成。 e)Transaction接口用来管理Hibernate事务它主要方法有commit()和rollback()可以从Session的beginTrancation()方法生成。
Persistent Object 持久化对象可以是普通的Javabeans,惟一特殊的是它们与仅一个Session相关联。JavaBeans在Hibernate中存在三种状态 1.临时状态(transient):当一个JavaBean对象在内存中孤立存在不与数据库中的数据有任何关联关系时那么这个JavaBeans对象就称为临时对象(Transient Object)。 2.持久化状态(persistent):当一个JavaBean对象与一个Session相关联时就变成持久化对象(Persistent Object) 3.脱管状态(detached):在这个Session被关闭的同时这个对象也会脱离持久化状态就变成脱管状态(Detached Object)可以被应用程序的任何层自由使用例如可以做与表示层打交道的数据舆对象(Data Transfer Object)。
Hibernate的运行过程 Hibernate的运行过程如下 A:应用程序先调用Configration类该类读取Hibernate的配置文件及映射文件中的信息并用这些信息生成一个SessionFactpry对象。 B:然后从SessionFactory对象生成一个Session对象并用Session对象生成Transaction对象;可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进行加载保存更新删除等操作;在查询的情况下可通过Session对象生成一个Query对象然后利用Query对象执行查询操作;如果没有异常Transaction对象将 提交这些操作结果到数据库中。
Hibernate的运行过程如下图 补充 ORMapping基本对应规则 1类跟表相对应 2类的属性跟表的字段相对应 3类的实例与表中具体的一条记录相对应 4一个类可以对应多个表一个表也可以对应对个类 5DB中的表可以没有主键但是Object中必须设置主键字段 6DB中表与表之间的关系如外键映射成为Object之间的关系 7Object中属性的个数和名称可以和表中定义的字段个数和名称不一样 Hibernate中的对象 SessionFactory (org.hibernate.SessionFactory) 针对单个数据库映射关系经过编译后的内存镜像是线程安全的不可变。 它是生成的工厂本身要用到。 Session (org.hibernate.Session) 表示应用程序与持久储存层之间交互操作的一个单线程对象此对象生存期很短隐藏了连接也是的工厂。 Transaction (org.hibernate.Transaction) 应用程序用来指定原子操作单元范围的对象它是单线程的生命周期很短。它通过抽象将应用从底层具体的、以及事务隔离开。 ConnectionProvider (org.hibernate.connection.ConnectionProvider) 生成连接的工厂有连接池的作用。它通过抽象将应用从底层的或隔离开。仅供开发者扩展/实现用并不暴露给应用程序使用。 TransactionFactory (org.hibernate.TransactionFactory) 生成对象实例的工厂。仅供开发者扩展/实现用并不暴露给应用程序使用。
主键生产策略
1、increment主键自动增长、由hibernate来管理
注意如果数据库也设置了自动增长就会发生主键冲突问题
2、identity由底层数据库来管理生成不由hibernate管理
也就是说底层数据库怎么设置的主键就怎么来
注意mysql、sql server可以oracle不可以
3、sequence标识符生成器就是底层数据库来管理生成利用底层数据库提供的序列来生成标识符不由hibernate管理
注意mysql不支持序列 oracle支持
4、native由底层数据库自己来决定使用什么策略hibernate不管
注意mysql自动选择identity、oracle自动选择sequence
5、uuid随机生成32位不相同的字符串。
主键分自然主键和代理主键
1自然主键也就是在业务中有具体意义的主键
2代理主键就是上面我们说的那5种没有任何意义只是标识主键是唯一的。