13、Hibernate技术

原创 2016年08月29日 08:57:54

对应第16章
小结:
与数据库打交道都是通过Session操作的,而Session是由HibernateInitialize类(该类是自己写的)创立并操作

Hibernate是ORM(对象到关系数据库的映射)。
Hibernate通过 * .java、* .cfg.xml(配置文件)、* .hbm.xml(映射文件)操作关系数据库。
Hibernate中有重要的3个类:配置类(Configuration)、会话工厂类(SessionFactory)、会话类(Session)。
注意:会话类不是线程安全的,不要多个线程共享一个Session

配置文件:

在java resources/src 目录下有个 hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 <hibernate-configuration>
    <session-factory>
        <!-- 数据库驱动 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- 数据库连接的URL -->
        <property name="connection.url">jdbc:mysql://localhost:3306/db_database10</property>
        <!-- 数据库连接用户名 -->
        <property name="connection.username">root</property>
        <!-- 数据库连接密码 -->
        <property name="connection.password">111</property>
        <!-- Hibernate方言 -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- 打印SQL语句 -->
        <property name="show_sql">true</property>
        <!-- 多个类的映射文件  -->
        <mapping resource="com/mr/employee/Employee.hbm.xml"/>
    </session-factory>
 </hibernate-configuration>

持久化类

写法:
public class SomeClass{
   多个private属性;
   // 无参数构造函数
   public SomeClass(){
   }
   对应每个属性的setget方法
}

映射

一个类就对应一张表,需要写一个映射
比如 Employee.java类对应Employee.hbm.xml ,两者写在同一目录下。
具体的映射文件写法见p380

代码结构如下:
这里写图片描述

书上的对记录的增加、查看、修改、删除、延迟加载

Hibernate的缓存

有了缓存就不必时时去访问数据库了。

分为一级缓存(内部缓存)和二级缓存。
一级缓存
属于Session级缓存,生命周期与Session是相同的。每个Session都有自己对应的缓存,一个Session不能访问其他Session的对象缓存实例。
一级缓存不需要配置。

二级缓存:
从属于一个SessionFactory的都属于一个二级缓存。
Hibernate本身未提供二级缓存,需引入第三方插件实现二级缓存,比如EHCache。

二级缓存配置:
1、在hibernate.cfg.xml中加上:
<!-- 开启二级缓存 -->
<property name="hibernate.cache.use_second_level_cache">
true</property>
<!-- 指定缓存产品提供商 -->
<property name="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider</property>

2、在类对应的映射文件中加上
<cache usage="read-only"/>     -- 见书本p391

3、在java resources/src下新建 ehcache.xml,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
    <diskStore path="java.io.tmpdir"/>
    <defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        />
</ehcache>

结构如图:
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

hibernate5(13)注解映射[5]一对一共享主键关联

一对一共享主键下面我们直接通过实例来讲解共享主键配置: 主键主控方:Articlepackage com.zeng2.model;@Table(name = "t_article2") @Entit...

Hibernate学习笔记(1-13)

  • 2013年06月22日 23:54
  • 1.5MB
  • 下载

Hibernate关联映射(4)2016-07-13

继续今天理解一对多(多对一)双向关联。由于是双向关联,所以一对多和多对一是同一种情况。 还是用person和address的例子。一个person有多个address。这次有点复杂,把实体类的结构贴...

hibernate-wzr13

  • 2007年08月19日 21:39
  • 9.58MB
  • 下载

深入浅出hibernate(13)

  • 2009年06月11日 12:44
  • 1.39MB
  • 下载

12-13.Hibernate_双向一对多映射

1.在1的端,有一个set的属性,在mapping文件中,用set来映射1到多的一端的关系.一般1的一端不要维护关联关系,设置inverse为true,放弃维护. /* * 1. 声明...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:13、Hibernate技术
举报原因:
原因补充:

(最多只允许输入30个字)