1. Hibernate基础
1.1 Hibernate用来做什么
1.1.1 数据访问层框架(持久层框架)
1. SQL语句过于繁杂, 和数据库的耦合度高
2. 数据库之间SQL的不同,导致移植困难
3. 二维关系表和对象之间数据结构的不匹配
1.1.2 Hibernate的工作原理 ―― ORM
对象-关系 映射
1.2 Hibernate HelloWorld
1.2.1. Jar
1.2.2.Hibernate配置文件(1)
数据库连接信息及Hibernate的一些配置信息
hibernate.cfg.xml
1.2.2.1 Hibernate数据映射类型
hibernate映射数据类型 对应java类型 对应数据库类型
1.string String varchar、varchar2
2.integer Integer int、number
3.double double double、number
4.date Date date
5.timestamp(年月日时分秒) Date timestamp、datetime
6.yes_no boolean (Y N)
7.true_false boolean (T F)
8.big_decimal BigDecaimal bigint 、number
1.2.2.2 Hibernate主键生成方式
方式1: 自动主键生成方式
<generator class="identity"></generator>
方式2: 利用sequence生成主键(Oracle)
<generator class="sequence">
<param name="sequence">序列名称</param>
</generator>
方式3: 根据配置文件的方言属性来决定使用什么样的主键生成方式
<generator class="native">
<param name="sequence">序列名称</param>
</generator>
方式4: 根据现有表中id的最大值+1后的值作为主键插入,主要针对不支持主键的数据库,对于并发执行的SQL语句会发生错误
<generator class="increment"></generator>
方式5: 用户需要自己指定主键 eg:user.setId(1);
<generator class="assigned"></generator>
1.2.3.Hibernate映射文件 (n)
用来指明类和表之间的对应关系,Hibernate根据该文件生成SQL语句
XXX.java
XXX.hbm.xml
可以利用ant工具根据Hibernate配置文件生成相应的pojo类
<target name="pojo">
<hibernatetool destdir="${dir.src}">
<classpath refid="cp" />
<configuration configurationfile="${dir.classes}/hibernate.cfg.xml" />
<hbm2java jdk5="true"/>
</hibernatetool>
</target>
利用ant根据Hibernate配置文件生成数据库表以及sql语句
<target name="schema">
<hibernatetool destdir=".">
<classpath refid="cp" />
<configuration configurationfile="${dir.classes}/hibernate.cfg.xml" />
<hbm2ddl drop="true" create="true" console="true" export="true" outputfilename="schema.sql" delimiter=";" format="true" />
</hibernatetool>
</target>
也可以利用MyEclipse提供的反向工程(根据数据库表生成映射文件以及POJO类)
2. 持久化对象和一级缓存机制
2.1 对象的三种状态(在Hibernate看来)
2.1.1 暂时态
和Session没有发生任何关系的对象
2.1.2 持久态
和Session发生了关系,save、get、query
1)Session中会缓存该对象(Session的缓存叫一级缓存)
2)Session再获取对象时,首先去查找一级缓存,如果没有才查询数据库
3)Session要负责将持久态对象的变化更新到数据库
(在是flush()的时候更新,tx在提交的时候会自动调用session的flush())
2.1.3 游离态
session.evict(Object obj)
和Session解除了关系
3.二级缓存机制
在应用程序中由于业务的需要客户端可能要访问一些共同的数据(例如购物网站的商品列表),将这些数据缓存在一级缓存中不合理,因为一级
缓存是一个用户一个,所以建立二级缓存是所有用户共享的一个缓存,常用来缓存一些客户经常访问并且是每个客户都需求的数据
3.1二级缓存的使用
1)在配置文件中开启二级缓存
导入ehcache-1.2.3.jar
<!-- 指定二级缓存策略ehcache-1.2.jar -->
<property name="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>
2)填写ehcache.xml配置文件
详情参见项目里面的ehcache.xml配置文件
3)在需要缓存的POJO中开启二级缓存
<cache usage="read-only" region="sampleCache1" />
3.2查询缓存
将常用的查询语句存入二级缓存中
1)在配置文件中开启查询缓存
<!-- 启用查询缓存 -->
<property name="hibernate.cache.use_query_cache">true</property>
2)在dao方法中开启查询缓存
Session session=HibernateUtil.getSession();
Query q=session.createQuery("需要缓存的SQL语句");
q.set
q.setCacheable(true);//支持查询缓存
4. Hibernate延迟加载机制
4.1 基本原理
1)实体对象在用到的时候,再去查询数据
具备这样功能的方法:
session.load(...)
query.iterator()
这些方法返回的对象,里面没有数据
数据在用的的时候(getXXX调用时)才取
2)默认是启用延时加载的
lazy:是否启用延缓加载 fetch:是否采用外连接构建的查询语句(此属性只针对session.get()这种机制取数据有效
如果对于Query方式取数据,需要写HQL语句 eg:from Emp e left outer join fetch e.dept)
一般有两种选择:1:fetch:join 不采用延缓加载的外连接查询语句
2:lazy:true 采用延缓加载的select查询语句
****对于一对多和多对多的延时加载,关联的另外一方总会延时加载,但是对于一对一不一定
也就是说无论调用get(Dept),还是load(Dept),Emp都会延时加载
规律:当该对象的映射文件中指明了关联外键时,和他关联的对象会延时加载,如果该对象的映射文件中没有明确指明外键关联,则不延时加载
4.2 实现原理
1)load方法、iterator方法返回的对象不是实体类
而是该实体类动态子类对象,该子类重写了getXXX
方法,在该方法中触发了对数据库的访问
2)具体Hibernate调用了GBLIB的功能实现了动态生成子类
4.3 OpenSessionInView和ThreadLocal
1)OpenSessionInView把Session的关闭延迟到View组件运行完之后
2)如果用延迟加载必须OpenSessionInView,否则在取数据时,session已经关闭了
3)实现OpenSessionInView可以采用很多技术:
Servlet――过滤器
Struts2――拦截器
Spring ―― AOP
4)使用OpenSessionInView必须满足Session的线程单例
一个线程分配一个Session,在该线程的方法中可以获得该Session
具体使用ThreadLocal――其实是一个线程为KEY的Map
TestThreadLocal
HibernateUtils
5)Hibernate的支持
配置文件中:
<property name="current_session_context_class">thread</property>
然后调用:
sessionFactory.getCurrentSession();
自动实现线程单例
5.映射类型总结
5.1 many-to-one关联映射(员工-部门)
员工表中关联字段:t_dept_id
pojo:Emp中关联一个属性:private Dept dept
Emp映射文件中配置:
<many-to-one name="dept" class="Dept" column="t_dept_id"
lazy="false" fetch="join" />
Dept映射文件正常配置
增删改查:
增:创建一个员工对象,创建一个部门对象,插入员工时会自动关联员工的部门号
删:
查:查询Emp时会自动带出Dept
5.2 继承映射
5.2.1 单表(问题-选择题-问答题)
数据库表:t_question(...t_type...);
pojo:Quesion: 公共属性
ChoiceQuestion:继承Question,增加选择题特有属性
EssayQuestion: 继承Question,增加问答题特有属性
Question映射文件配置:
<discriminator type="string" column="t_type" /> //配置区分器,用来识别往哪个字段填入数据
<subclass name="ChoiceQuestion" discriminator-value="c"> //配置子类
<property name="options" column="t_options" type="str
没有合适的资源?快使用搜索试试~ 我知道了~
基于SSH的车间信息管理系统源码.zip
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
共178个文件
gif:34个
jar:33个
xml:26个
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 25 浏览量
2023-06-17
14:44:36
上传
评论
收藏 17.99MB ZIP 举报
温馨提示
源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 178 条
- 1
- 2
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
知一NN
- 粉丝: 31
- 资源: 3828
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)