示例 2 : POJO是什么 示例 3 : HIBERNATE 开发流程 示例 4 : one-many怎么配置 示例 5 : many-one怎么配置 示例 6 : many-many 怎么配置 示例 7 : get与load的区别 示例 8 : 常见查询3种方式 示例 9 : 三种状态 示例 10 : openSession与getCurrentSession的区别 示例 11 : 1级缓存 示例 12 : 2级缓存如何配置
HIBERNATE 是一种轻量级的ORM的实现,是对JDBC的一种封装。
ORM是意思是 对象与关系数据库之间的映射 Object Relation Database Mapping.
POJO的全称是plain old java object
相当于JAVA BEAN,又叫做实体类 entity bean
一个完整的hibernate 开发流程包含如下这些步骤
1. 配置Hibernate.cfg.xml 里面包含数据库连接信息,哪些HBM,是否使用2级缓存,是否显示SQL,方言等等 2. 配置 hbm 文件 大概是哪个类对应哪张表,属性对应什么字段,各种关系映射,比如ONE-MANY,MANY-ONE,MANY-MANY 3.使用HIBNERATE 通过Configuration拿到SessionFactory, 接着拿到Session,然后进行一系列数据库相关的业务操作
以Category和Product的一对多为举例
1. Category中要有一个set的products 2. 在Category.hbm.xml中要有一对多映射 <set name="products" lazy="false"> <key column="cid" not-null="false" /> <one-to-many class="Product" /> </set> 详细参考Hibernate 实现一对多
还是以Product和Category为例
1. Product中要有一个category属性 2. 在Product.hbm.xml中 进行many-to-one配置 <many-to-one name="category" class="Category" column="cid" /> 详细参考 Hibernate 实现多对一
以User和Product为例子
1. User中有products属性 2. Product中有users属性 3. 使用如下进行配置 <set name="products" table="user_product" lazy="false"> <key column="uid" /> <many-to-many column="pid" class="Product" /> </set> 详细请参考 Hibernate 实现多对多
实体类对象在Hibernate中有3种状态
分别是瞬时,持久和脱管 瞬时 指的是没有和hibernate发生任何关系,在数据库中也没有对应的记录,一旦JVM结束,这个对象也就消失了 持久 指得是一个对象和hibernate发生联系,有对应的session,并且在数据库中有对应的一条记录 脱管 指的是一个对象虽然在数据库中有对应的一条记录,但是它所对应的session已经关闭了 代码演示参考 Hibernate 对象的三种状态 瞬时 持久 脱管
Hibernate 有两种方式获得session,分别是:
OpenSession和getCurrentSession 他们的区别在于 1. 获取的是否是同一个session对象 OpenSession每次都会得到一个新的Session对象 getCurrentSession在同一个线程中,每次都是获取相同的Session对象,但是在不同的线程中获取的是不同的Session对象 2. 事务提交的必要性 openSession只有在增加,删除,修改的时候需要事务,查询时不需要的 getCurrentSession是所有操作都必须放在事务中进行,并且提交事务后,session就自动关闭,不能够再进行关闭 代码演示 参考 Hibernate OpenSession与GetCurrentSession的区别
Hibernate的一级缓存是在Session上,二级缓存是在SessionFactory上
配置方式: 要在hibernate.cfg.xml中开启 <property name="hibernate.cache.use_second_level_cache">true</property> <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property> 实例参考 : 如何进行Hibernate的ehcache二级缓存配置
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2020-07-16
nb站长搞个ssm的呗 讲道理这些面试题作用太大了
2019-03-13
站长求ssm面试题
2019-01-10
请问什么是轻量级?
2018-12-20
如下:
2018-06-10
站长有没有ssm的面试题啊
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 3 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|