![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hibernate
文章平均质量分 65
aaa11111232
这个作者很懒,什么都没留下…
展开
-
hibernate第一个例子,保存一个对象
首先,我们先要编写一个pojo,继续拿老生常谈的Person类(不了解pojo的可以看我上一篇帖子:关于ormapping)。 环境的配置: 导入jar包: 由于这里是Java Project,我们要手动添加jUnit 右键项目名称 选择弹出的properties窗口中的buildPath,出现如下对话框 添加jUnit完毕public class Person impl原创 2015-09-01 23:20:46 · 1462 阅读 · 0 评论 -
session的产生方式
如果我们遇到一个方法里面有很多个事务,那么这个几个事务可能同时都在修改同一个数据,到最后必然报错。所以说这种情况是不允许出现的。 由于我们来开启事务的时候,都是通过以下的步骤:Session session=sessionFactory.openSession();Transaction transaction=session.beginTransaction();由于我们在前面的帖子中说到,s原创 2015-09-05 16:51:40 · 2552 阅读 · 1 评论 -
hibernate的crud操作
public class testAdd extends hibernateUtil{ @Test public void testAddPerson(){ //为了防止代码重写太多次,我们把前面三步放在utils里面。 //得到session,注意,这里的session与jsp的session不同 Session session=se原创 2015-09-02 11:26:35 · 264 阅读 · 0 评论 -
hibernate的查询缓存
查询缓存是在二级缓存的基础上,所以要想开启查询缓存,还要在hibernate,cfg.xml文件中多加一个属性:开启查询缓存:<property name="cache.use_query_cache">true</property>下面是查询缓存的使用 @Test public void testQueryCache(){ Session session=sessio原创 2015-09-06 10:22:39 · 257 阅读 · 0 评论 -
hibernate的二级缓存
二级缓存是存放共有数据的,并且要求其中的数据修改次数尽可能的少,并且其生命周期与sessionFactory一致。 二级缓存一般应用与服务器开启的时候,读取配置信息,或者对于一款软件,读取其中的文档帮助信息,还有菜单信息。 那么,怎样使用二级缓存呢? 首先,二级缓存跟查询缓存都是hibernate默认关闭的,所以要在配置文件中打开,值得一提的是,在hibernate中,并没有提供解决二级缓存的原创 2015-09-06 09:58:06 · 399 阅读 · 0 评论 -
一对多的双向关联
在上一个帖子我们说到了一对多的单项关联,那么我现在来说一下一对多的双向关联。单向关联就像是充分不必要条件(从左推右可以,从右推左不可以)。那么双向关联,顾名思义,就是充要条件了。 要建立双向关联,首先我们要在单向关联的基础上,在“不必要”的那一端(在这里是多的一方),多加一个“充分条件”(在这里是一的那一端)的属性。 此时student类修改成这样:public class Student im原创 2015-09-04 11:34:09 · 1948 阅读 · 0 评论 -
懒加载和抓取策略
hibernate中性能的指标:发出sql语句的数量 我们来讨论一下hibernate的性能问题,能提升hibernate的性能的方式有: 1、懒加载 2、抓取策略 3、hql语句 4、查询缓存 我们先来说一下懒加载: hibernate的懒加载是针对类、集合、多对一单向关联什么时候发出SQL语句的技术。 我们通过例子来说明:在这里我们讨论集合的懒加载public void test原创 2015-09-05 14:33:56 · 1322 阅读 · 0 评论 -
hibernate的一级缓存
一级缓存的生命周期:因为hibernate的一级缓存是存储在session中,所以它的生命周期跟session一样。 一级缓存的安全性:因为一级缓存存储的数据都是私有数据,并且一级缓存存储的数据在session中,所以它的数据是线程安全的。 怎样把数据放到一级缓存中?使用session.save()/update()/get()/load(), 关于代码的测试,就是使用同样的方法再进行相同的操原创 2015-09-05 22:33:39 · 385 阅读 · 0 评论 -
hql语句:一对多查询
一对多的查询又包含以下情况: 1、等值连接 2、内连接 3、迫切内连接 4、左外连接 5、迫切左外连接1、等值连接:一对多查询的时候,由于使用的hql语句,是根据类来查询的,所以hql语句这样表示: /** * 等值连接 */ public void Connect_equal(){ Session session=sessionFacto原创 2015-09-07 10:57:00 · 6839 阅读 · 0 评论 -
hql语句:单表查询
在hibernate中,有下列比较常用的查询语句: 1、hql (hibernate query language) 2、criteria queries (条件查询) 3、native queries(原生态sql语句查询)最常用的就是hql,那么 使用hql进行查询,又分为:单表查询,一对多和多对多查询,多表查询。 首先我们来说一下单表查询: 就拿获取所有课程来原创 2015-09-06 16:28:02 · 2386 阅读 · 1 评论 -
多对多的关系操作
把表建好了之后,我们来进行多对多的关系操作。public void saveStudent_cascade_Course(){ Session session=sessionFactory.openSession(); Transaction transaction=session.beginTransaction(); Student student=原创 2015-09-04 15:05:12 · 413 阅读 · 0 评论 -
多对多表的创建
多对多的关联,首先就不同于一对多的关联,在多对多的关联中,两边都是多的一方,所以关系操作在哪边进行,效率都是一样的。 再者,多对多要借助第三张表的联合主键建立关系。在这里,我们也会涉及到使用hibernate自定义的配置文件的方法。我们就拿学生和课程作为例子, student类:private Long sid; private String sname; private Str原创 2015-09-04 13:50:07 · 483 阅读 · 0 评论 -
分析hibernate与jdbC的优缺点
hibernate和jdbC都是操作数据库的框架,那么既然有了jdbC,为什么又要学习hibernate呢? 首先我们先来了解一下它们各自的优缺点。 jdbC: 缺点: 1、查询语句比较繁琐 注:因为使用jdbC查询语句的时候,要把数据封装在ResultSet中,而且读取里面的数据还要判断里面是否有内容。2、在关闭资源的时候,本来就是在finally里面关闭资源,但是在finally代码块原创 2015-09-01 17:04:19 · 3291 阅读 · 0 评论 -
关于ormapping
ormapping的意思是object-relation mapping 对象关系映射。即表明ormapping是让对象跟数据库建立关系的框架。那么它是怎样建立关系的呢? 通过配置文件,拿我们老生常谈的例子,person类public class Person implements Serializable { private Long id; private String nam原创 2015-09-01 21:02:43 · 3507 阅读 · 0 评论 -
保存一个信息到person中
在前面创建了表的基础上,保存信息到Person表中public class testAdd { @Test public void testAddPerson(){ //创建配置文件对象 Configuration configuration=new Configuration(); //得到配置文件 configura原创 2015-09-01 23:52:57 · 507 阅读 · 0 评论 -
hibernate加载配置文件的两种方式
第一种就是使用默认的名字为hibernate.cfg.xml 得到配置文件的源代码为 第二种方法就是使用我们自定义的配置文件名和存放位置 得到配置文件的源代码为原创 2015-09-02 08:59:59 · 365 阅读 · 0 评论 -
hibernate加载流程
1、创建configuration对象Configuration configuration=new Configuration();2、创建配置文件对象,这里使用默认方式加载配置文件configuration.configure();配置文件中存放的信息有: a)、映射文件信息(包括pojo及其属性,系统就是根据映射文件的class属性来认定哪些类为pojo的) b)、数据库的连接信息3、得到原创 2015-09-02 10:07:10 · 492 阅读 · 0 评论 -
使用myEcplise由表生成pojo、Dao
下面我们来讨论一下,由数据库中的表生成pojo、Dao 首先我们打开 点进去之后,出现如下窗口 这时候,我们又见空白处,点击new选项 出现如下窗口 在driver template栏中下拉菜单,选择mysql.然后下面connection URI自动出现MySQL的访问url,如下图所示 这时,我们只需要修改里面的数据,把它改成我们平时访问数据库的URL,修改完之后原创 2015-09-02 14:22:00 · 232 阅读 · 0 评论 -
对象的状态
hibernate中对象的状态详解及对象状态的转换翻译 2015-09-03 12:04:35 · 576 阅读 · 0 评论 -
关于主键生成器
在这里我们来讨论四种主键生成器 1、increment 2、identiey 3、uuid那么我们先来第一种:@Test public void testIncrement(){ //开启session连接 Session session=sessionFactory.openSession(); //开启事务 Trans原创 2015-09-02 17:06:22 · 464 阅读 · 0 评论 -
一对多的单项关联
现在我们来讨论一下一对多的单项关系操作。 首先把环境搭好。 我们就拿老生常谈的班级和学生作为例子。 关于班级类:有班级的id ,班级的名字,班级的描述。 关于学生类:有学生的id,学生的名字,学生的描述。 首先两张表要进行关联,首先需要外键,那么在一对多的情况中,外键是放在多的那一方。(外键在多的那一方是指生成的表在数据库中,外键在多的那一方) 首先我们要把2个类设计出来。 class原创 2015-09-03 16:54:51 · 610 阅读 · 1 评论 -
hql:一对多和多对多的结合
其中,一对多和多对多面临着2种问题,一种是结构的问题,另外一种是内容的问题,我们只能在这二者选其一,选择了结构,就可能会出现我们需要的字段比查找出来的字段少得多,当然,这种情况,只能借助懒加载。如果选择了另外一种情况,可能会出现表的结构不同问题,我们自己创建的javaBean要先通过转换,才能调用dao操作数据库。当我们查找数据的时候,如果关联到很多张表,那么应该怎样查找,查找那张表效率更高呢?查找原创 2015-09-07 14:50:15 · 1224 阅读 · 0 评论