浅谈hibernate

a、应用程序先调用Configuration类,该类读取Hibernate配置文件及映射文件中的信息,

b、并用这些信息生成一个SessionFactory对象,

c、然后从SessionFactory对象生成一个Session对象,

d、并用Session对象生成Transaction对象,开启事务;

e、可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()、createQuery()等方法对进行CURD等操作;

f、提交事物

g、关闭资源

下面对各部分进行详解

1、hibernate.cfg.xml配置文件

作用:a、配置连接资库的信息

b、配置hibernate自身拥有的一些属性

如:

#使用的哪一种数据库

<prop key="hibernate.dialect">com.bsoft.bschis.dialect.MyOracle10gDialect</prop>

#是否开启展示的sql
<prop key="hibernate.show_sql">true</prop>

#开启二级缓存
<prop key="hibernate.generate_statistics">true</prop>

#连接的释放模式
<prop key="hibernate.connection.release_mode">auto</prop>

#
<prop key="hibernate.autoReconnect">true</prop>

#设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数
<prop key="hibernate.jdbc.fetch_size">100</prop>

#Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数
<prop key="hibernate.jdbc.batch_size">50</prop>

c、配置映射文件

2、映射文件

<hibernate-mapping>

<class entity-name="java实体类" table="表名">
<id name="主键" type="主键类型">
<column name="主键" />
<generator class="自增策略" />
</id>

<property name="类属性" colm="表字段" type="表类型" length="长度" />

</hibernate-mapping>

3、对hibernate 的使用

 @Before
    public void before(){
        //创建配置对象
        Configuration config = new Configuration().configure();
        //创建服务注册对象
        ServiceRegistry service = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
        //创建会话工厂对象
        sessionFactory = config.buildSessionFactory(service);
        //创建会话对象
        session = sessionFactory.openSession();
        //开启事务
        transaction = session.beginTransaction();
    }

    @After
    public void after(){
        transaction.commit();    //提交事务
        session.close();        //关闭会话
        sessionFactory.close(); //关闭会话工厂
    }

    @Test
    public void testSaveStudent() {
        //创建学生对象
        Student s = new Student(1,"张三","男",new Date(),"武当山");
        /*
         * 由于hibernate.cfg.xml中配置的hbm2ddl.auto值为‘Create‘,所以执行save
         * 方法会检查数据库中是否有student表,没有的话会创建此表,并将s对象保存进去
         */
        session.save(s);
    }

原文地址:https://www.cnblogs.com/zj-xu/p/10861358.html

时间: 2024-10-12 19:46:49

浅谈hibernate的相关文章

浅谈Hibernate关系映射(3)

继上篇博客 一对多关联映射(单向) 上面我们介绍了多对一,我们反过来看一对多不就是多对一吗?那还用再进行不同的映射吗?有什么差别吗?一对多和多对一映射原理是一致的,存储是相同的,也就是生成的数据库的表是一样的,他们之间不同的是维护的关系不同. 他们之间不同点是维护的关系不同 *多对一维护的关系是:多指向一的关系,有了此关系,加载多的时候可以将一加载上来. *一对多维护的关系是:一指向多的关系,有了此关系,在加载一的时候可以将多加载上来. 一个班级有多个学生,通过班级可以看到学生信息. Class

浅谈Hibernate关系映射(2)

继上篇博客 一对一关系映射:一对一关联映射在实际生活中是比较常见的,如人与身份证的关系,通过人这个对象可以找到他相关的内容. 一对一单向(主键): 单向一对一主键关联,靠的是它们的主键相等,从Person中能看到IdCard,也就是把t_idCard中的主键拿过来当做t_Pseron的主键. 如图的线表示一个关联,在person中可以看见idcard.即在person中持有idCard的引用 person类的映射关系 <hibernate-mapping> <class name=&qu

浅谈Hibernate关系映射(4)

继上篇博客 多对多关联映射(单向) 多对多对象关系映射,需要加入一张新表完成基本映射. Hibernate会自动生成中间表 Hibernate使用many-to-many标签来表示多对多的关联,多对多的关联映射,在实体类中,跟一对多一样,也是用集合来表示的. 如下图所示 通过User可以查看Role的信息 User的映射文件 <hibernate-mapping> <class name="com.bjpowernode.hibernate.User"> <

浅谈hibernate的sessionFactory和session

首先,讲一个悲伤的故事... 有一天,一个以为自己javaEE很叼的程序员,在经历了好久不写java代码的情况下,去参加阿里巴巴的java面试,然后,在被问到一个很简单的问题的时候,结果没有回答好.那么接下来先说说这个问题吧... 问:hibernate的sessionfactory是干嘛的?session又是干嘛的呢? 那么,你会吗?可以讲清楚么?如果答案是会,可以,那么你就不用往下看了....如果会还是想往下看,那么, 你就看呗. 在回答这个问题之前,先来看看一些概念. 一.hibernat

浅谈Hibernate和Ibatis区别

hibernate与ibatis比较 hibernate 是当前最流行的o/r mapping框架,它出身于sf.net,现在已经成为jboss的一部分了.ibatis 是另外一种优秀的o/r mapping框架,目前属于apache的一个子项目了. 相对hibernate"o/r"而言,ibatis是一种"sql mapping"的orm实现. hibernate 对数据库结构提供了较为完整的封装,hibernate的o/r mapping实现了pojo 和数据库

【SSH 基础】浅谈Hibernate关系映射(3)

继上篇博客 一对多关联映射(单向) 上面我们介绍了多对一,我们反过来看一对多不就是多对一吗?那还用再进行不同的映射吗?有什么区别吗?一对多和多对一映射原理是一致的,存储是同样的.也就是生成的数据库的表是一样的.他们之间不同的是维护的关系不同. 他们之间不同点是维护的关系不同 *多对一维护的关系是:多指向一的关系.有了此关系,载入多的时候能够将一载入上来. *一对多维护的关系是:一指向多的关系.有了此关系,在载入一的时候能够将多载入上来. 一个班级有多个学生,通过班级能够看到学生信息. Class

浅谈Hibernate缓存机制:一级缓存、二级缓存

一:什么是缓存机制 当我们频繁访问数据库时,尤其像Hibernate持久层框架,会导致数据库访问性能降低,因此我们期望有一种机制能提供一个"缓存空间",我们将需要的数据复制到这个"缓存空间",当数据查询时,我们先在这个"缓存空间"里找,如果没有,我们再去数据库查找,这样就减少了与数据库的访问,从而提高了数据库访问性能,这就是缓存机制. 二:Hibernate缓存机制 1:一级缓存:Hibernate默认的缓存机制,它属于Session级别的缓存机

浅谈Hibernate入门

前言 最近打算做一个自己的个人网站,经过仔细思考,打算使用hibernate作为开发的ORM框架,因此各种找资料,由于本人是刚刚接触这技术的,所以就找了比较基础的知识来分享下 基本概述 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库.Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hi

浅谈Hibernate的Configuration和SessionFactiory

Configuration: Configuration是hibernate的入口,负责管理Hibernate的配置信息,这些配置信息都是从配置文件hibernate.cfg.xml或者Hibernate.properties 读取的,当然也可以自定义文件名称,只要在实例化Configuration的时候指定具体的路径就可以了: SessionFactiory: Configuration的实例会根据当前的配置信息,构造SessionFactory实例.SessionFactory是线程安全的,

【Hibernate 7】浅谈Hibernate的缓存机制

一.Hibernate缓存机制简介 对于Hibernate本身来说,它的缓存主要包括三部分:session缓存(一级缓存).二级缓存.查询缓存. 1.1,session缓存 随着session的关闭而消失,load.iterator操作,会从一级缓存中查找数据,如果找不到,再到数据库里面查找.Query.list操作,如果没有配置查询缓存,将直接从数据库中获取数据. 特点:只能被当前事务访问,每个事务都有各自的缓存,缓存内的数据通常采用相互关联的对象形式.缓存的生命周期依赖于事务的生命周期,只有