![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hibernate学习心得
J10FX
一个寻梦的学生
展开
-
创建第一个Hibernate程序
<br />1.创建第一个Hibernate程序<br />a.新建一个java project,写好相应的实体类和测试类,并配置好相应的映射文件<br />b. 配置好hibernate.cfg.xml文件,并引入相应实体类的映射文件<br />c.用Configuration接口启动Hibernate,创建SessionFactory对象,然后SessionFactory<br />接口负责初始化Hibernate,并负责创建Session对象,这里的Session功能相当于<br />JDBC里面的一原创 2010-12-10 22:39:00 · 194 阅读 · 0 评论 -
Hibernate性能优化
<br />1.性能优化<br />a. 注意session.clear()的运用,尤其在不断分页的时候<br />java在语法上不存在内存泄露,因为垃圾收集器会自动回收,但是当java用到外部资源的时候就说不定了,比如读取文件,连接池忘记关闭,这样垃圾收集器不能回收内存从而造成内存的泄露<br />b.1+n问题是指从一张表中读取数据时候,和它对应的所关联的表的数据也会取出来,解决问题有有<br />1.多这方设fetch=FetchType.LAZY,这样就不会马上取出所关联表数据,只有当需要的时候才原创 2010-12-10 22:49:00 · 244 阅读 · 0 评论 -
Hibernate中关联关系中的CRUD
<br />1.关联关系中的CRUD a.设定cascade可以设定在持久化时对于关联对象的操作 b.cascade仅仅是帮我们省了编程的麻烦而已,不要把它的作用看的太大,它的属性指明做什么操作的时候关联对象是绑在一起的 c.双向关系在程序中要设定双向关联,还要一方指定mappedBy d.fetch=FetchType.LAZY表明当加载一个对象时,会延迟其关联对象的加载,不管是load()还是get() fetch=FetchType.EAGER表明当加载一个对象时,会即时对其关联对象进行加载,即两种表原创 2010-12-10 22:47:00 · 202 阅读 · 0 评论 -
Hibernate中表与表之间的关联
<br />1.一对一外键双向映射<br />所谓外键可以通过某一个表中一个字段的属性去引用另外一个表<br />在两个实体类中都拥有各自类的引用,除开设置各自主键外,还要在类的属性引用中注解<br />@OneToOne<br />@JoinColumn(name="xxx")指定字段名称<br />当关系交给某一方主导时还要加注解<br />@OneToOne(mappedBy="主导类的属性值")<br /> <br />1.联合主键关联<br />a.当某一个表中有两个字段要与另一个表中的两个联合主原创 2010-12-10 22:45:00 · 572 阅读 · 0 评论 -
Hibernate的认识
<br />1.什么是Hibernate<br />Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行了非常轻量级的<br />对象封装,使得java程序员可以随心所欲的使用对象编程思维来操控数据库。<br />Hibernate可以使用在任何使用JDBC的场合,既可以在java的客户端使用,也可以<br />在Servlet/jsp的Web应用中使用,最具意义的是它可以完成数据持久化的重任<br />Hibernate的核心接口一共有5个,分别为:Session、SessionFact原创 2010-12-10 22:36:00 · 168 阅读 · 0 评论 -
Hibernate的二级缓存和事务
<br />1.二级缓存配置<br />a.在hibernate配置文件中打开二级缓存,并打开相应的二级缓存类<br />b.在src目录下配置二级缓存文件,并做相应的说明<br />c.在相应的实体类中注解@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)<br />说明此对象使用二级缓存,注意添加二级缓存jar包<br />2.load,iterator默认使用二级缓存<br />3.list默认往二级缓存加数据,但是查询的时候不使用<br />4.如果q原创 2010-12-10 22:50:00 · 273 阅读 · 0 评论 -
树状结构设计
<br />1.树状结构设计(很重要)<br />举个例子,一个大公司下面有若干分公司,分公司下又有若干分公司,这样在每一个公司实体类中我们可以利用树状结构解决问题<br />定义一个公司对象的引用指向父类公司,定义公司的集合Set指向子类公司,这样在同一个类中使用OneToMany和ManyToOne,例子代码如下<br />package com.fendou.hibernate.model;<br />import java.util.HashSet;<br />import java.util.Se原创 2010-12-10 22:48:00 · 271 阅读 · 0 评论 -
Hibernate接口的认识和对象的几种状态
<br />1.Configuration<br />a.AnnotationConfiguration<br />b.进行配置信息的管理<br />c.用来产生SessionFactory<br />d.可以在configure方法中指定hibernate配置文件<br />2.SessionFactory<br />a.用来产生和管理Session<br />b.通常情况下每个应用只需一个SessionFactory,除非要访问多个数据库<br />c.openSession是指每次都产生一个Sessi原创 2010-12-10 22:42:00 · 254 阅读 · 0 评论 -
Hibernate中关联关系中的CRUD
<br />1.关联关系中的CRUD a.设定cascade可以设定在持久化时对于关联对象的操作 b.cascade仅仅是帮我们省了编程的麻烦而已,不要把它的作用看的太大,它的属性指明做什么操作的时候关联对象是绑在一起的 c.双向关系在程序中要设定双向关联,还要一方指定mappedBy d.fetch=FetchType.LAZY表明当加载一个对象时,会延迟其关联对象的加载,不管是load()还是get() fetch=FetchType.EAGER表明当加载一个对象时,会即时对其关联对象进行加载,即两种表原创 2010-12-10 22:46:00 · 250 阅读 · 0 评论 -
Hibernate中session的主要方法
<br />1.Session 管理一个数据库的任务单元<br />a.方法(CRUD)<br />1>save()<br />2>delete()<br />3>load()<br />4>get()<br />5>update()<br />get与load的区别<br />a.不存在对应记录时表现不一样<br />b.load返回的是代理对象,等到真正用到对象的内容时才发出sql语句<br />c.get直接从数据库加载,不会延迟<br />2.update<br />a.用来更新detached对象原创 2010-12-10 22:43:00 · 399 阅读 · 0 评论