Hibernate配置二级缓存:  --- 使用EhCache





1.hibernate.cfg.xml中配置二级缓存





<hibernate-configuration>

  <session-factory>

<!-- 使用EHCache配置Hibernate二级缓存 -->

    <property name="hibernate.cache.user_second_level_cache">true</property>

    <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

  </session-factory>

</hibernate-configuration>  





2.在持久化类的映射文件里须要指定缓存的同步策略,关键代码:





   --- 产品信息字段配置信息

<hibernate-mapping>

<class name="com.mr.product.Product" table="tab+product">

<cache usage="read-only">                           //指定缓存的同步策略

</hibernate-mapping>





3.在项目的classpath根文件夹下添�换成配置文件ehcache.xml,该文件可一直hibernate的zip包下的etc文件夹中找到。

  缓存配置文件代码例如以下:





<ehcache>

<defaultCache

        maxElementsInMemory="10000"

        eternal="false"

        timeToIdleSeconds="120"

        timeToLiveSeconds="120"

        overflowToDisk="true"

        />

</ehcache>









  Hibernate的映射关系





双向多对一关联:product  n <---> 1  factory





既能够通过主控方载入被控方,也能够通过被控方载入主控方

factory配置:

       //定义一对多映射

        <set name="products" 

          inverse="true">

          <key column="factoryid"/>

          <one-to-many class="com.mr.product.Product"/>

        </set>





product配置:

      //定义多对一映射

        <many-to-one name="factory" class="com.mr.factory.Factory">

        <column name="factoryid">

        </many-to-one>









一对一外键关联  --- 实际上就是多对一关联的一个特例而已,须要保证关联字段的唯一性,

                                        在<many-to-one>元素中通过 unique属性就可实现关联字段的唯一性





配置一对一关联: People <---> IDcard

               

People映射配置:一对一映射

            <many-to-one name="idcard" unique="true">

               <column name="card_id"/>

            </many-to-one>













多对多关联: --- 通过中间表             user          user-role            role

                        

                                                                id                 id                         id

                                                                name         user_id               rolename

                                                                                   role_id









User映射:





       <set name="roles" table="table_user_role">

                 <key column="user_id"></key>

                 <many-to-many class="com.mr.role.Role" column="role_id"/>

       </set>

       

Role映射:





       <set name="users" table="table_user_role">

                 <key column="role_id"></key>

                 <many-to-many class="com.mr.user.User" column="user_id"/>

       </set>

















级联操作:  --  当主控方运行save、update、delete操作时,管理对象(被控方)是否进行同步操作,

                 在映射文件里通过对 cascade属性的设置决定是否对关联对象採用级联操作。

      

      cascade级联操作參数设置:

      

      all                         全部情况均採用级联操作

      none                        默认參数,全部情况下均不採用级联操作

      save-update                 在运行save-update方法时运行级联操作

      delete                      在运行delete方法时运行级联操作

    

    eg:对于People   --   设置级联删除,当删除People对象的时候,会级联删除关联的IDcard对象,即delete People时,会先有一条select的SQL,再有两条delet的SQL

       <one-to-one name="idcard" calss="com.mr.idcard.IDcard" cascade="delete"></one-to-one>  









HQL查询:





      语法:

      select     对象.属性名

      from       对象

      where      过滤条件

      group by   对象.属性名 

      having     分组条件

      order by   对象.属性名





实体对象查询

   from 对象 对象别名 where 条件

   eg:

   Query q = session.createQuery("from Employee emp");

   emplist = q.list();









HQL參数绑定机制: 

   

   1.绑定?占位符

   eg:

   Query q = session.createQuery("from Employee emp where sex =?");

   q.setParameter(0,"男");

   emplist = q.list();





   1.绑定:parameter占位符

   eg:

   Query q = session.createQuery("from Employee emp where sex =:sex");

   q.setParameter("sex","男");

   emplist = q.list();

















Spring :

 

 1.使用BeanFactory管理bean ,在getBean方法之前,不会实例化对象

   eg:装载bean:

     Resource resource = new ClassPathResource("applicationContext.xml");  //装载配置文件

     BeanFactory factory = new XmlBeanFactory(resource);

     Test test = (Test)factory.getBean("test");

     

 2.ApplicationContext的应用:

   ApplicationContext扩展了BeanFactory的功能,加入�了如I18n,生命周期时间的公布监听等更强大的功能

   

   ApplicationContext接口有3个实现类,能够实例化当中不论什么一个类来创建Spring的ApplicationContext容器。

      

      1.ClassPathXmlApplicationContext  -- 从当前类路径中检索配置文件并装载它来创建容器的实例:

        eg:  ApplicationContext context = new ClassPathXmlApplicationContext(String configLocation);

        

      2.FileSystemXmlApplicationContext -- 通过參数指定配置文件的位置,能够获取类路径之外的资源。

        eg: ApplicationContext context = FileSystemXmlApplicationContext(String configLocation);

     

      3.WebApplicationContext           -- Spring的Web应用容器,有两种方法能够在Servlet中使用WebApplicationContext

         1.在Servlet的web.xml中配置Sping的ContextLoaderListener监听器

         2.web.xml中,加入�一个Servlet,使用Spring的org.springframework.web.context.ContextLoaderServlet类

         

 依赖注入的三种类型:

    1.接口注入

    2.setter注入

    3.构造器注入

Hibernate知识点总结的更多相关文章

  1. Hibernate知识点总结(一)

    前言:学习的过程在于不断的总结与思考,这里记下笔者在学习过程中,所遇到的知识点,增加对框架掌握的熟悉程度. 1.环境的搭建 通过maven可以轻松搭建hibernate的环境. <propert ...

  2. Hibernate知识点小结(三)-->一对多与多对多配置

    一.多表关系与多表设计 1.多表关系        一对一:            表的设计原则(分表原则):                优化表的性能                基于语意化分表 ...

  3. Hibernate知识点整理

    一, Hibernate 介绍: Hibernate 只是一个将持久化类与数据库表相映射的工具,每个持久化类实例均对应于数据库表中的一个数据行而已.用户只需直接使用面向对象的方法操作此持久化类实例,即 ...

  4. Hibernate 知识点梳理

    1.对持久化对象的要求 1)提供一个无参构造器 2)提供一个标识属性,如id,通常映射为数据库表的主键字段. 3)为持久化类的字段提供get.set方法. 注:但不一定所有字段都这么做,对于不提供ge ...

  5. hibernate知识点理解

    1.只有业务逻辑层出现的问题? 1.切换数据库麻烦 2.sql编写起来麻烦 3.我们的程序员不需要关注数据库,只希望关心业务本身 2.hibernate的好处 1.程序员只关心业务逻辑,使角色更加清楚 ...

  6. Hibernate 知识点复习

    核心接口 1  Configuration接口负责配置并启动Hibernate,创建SessionFactory对象 2  SessionFactory接口负责初始化Hibernate.它充当数据存储 ...

  7. Hibernate知识点小结汇总

    Hibernate部分 1.为什么要使用Hibernate开发你的项目呢?Hibernate的开发流程是怎么样的? 为什么要使用 ①.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复 ...

  8. Hibernate知识点小结(四)--JPA

    一.jpa的简介和入门 JPA:Java Persistence API,接口规范    Hinernate内部为JPA规范提供实现        开发步骤(EntityManager):       ...

  9. Hibernate知识点小结(二)

    一.持久化对象和标识符    1.持久化类        配置完关系后,操作的实体对应的类,成为持久化类 (Customer) 2.持久化类标识符(oid:object id)        3.持久 ...

随机推荐

  1. Spring 整合Redis 出现 afterPropertiesSet signature: ()V) Incompatible argument to function 解决办法

    正在做SpringMVC+Redis整合的练习 使用的是 spring-data-redis 和 Jedis 配置好之后出现了以下错误: Caused by: java.lang.VerifyErro ...

  2. 微博输入相关js 代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Python--模块微谈

    一个.py文件是一个模块,模块里面可以定义很多函数,载入模块就可以使用函数.模块又有python内置模块,又有第三方模块,不同模块里可以有相同的函数名和变量名,模块又可以组织到package里,不同的 ...

  4. C语言学习笔记(二):指针的用法

    与其说指针是一种工具,不如先说指针是一种数据类型. -------------------------------------------------------------华丽的分割线------- ...

  5. JS获取select选中的值

    var oSel=oFl.getElementsByTagName('select')[0]; oSel.onchange=function(){ var indexselect=oSel.selec ...

  6. BZOJ 1036 树的统计

    Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. Q ...

  7. 【Java】String,StringBuffer与StringBuilder的区别??

    String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能 ...

  8. hdu 5139 Formula

    http://acm.hdu.edu.cn/showproblem.php?pid=5139 思路:这道题要先找规律,f(n)=n!*(n-1)!*(n-2)!.....1!;  不能直接打表,而是离 ...

  9. 关于javascript document.createDocumentFragment() 替代insertCell、insertRow这种每次都使用大量的资源导致浏览器崩溃

    documentFragment 是一個無父對象的document對象他支持以下DOM2方法: appendChild, cloneNode, hasAttributes, hasChildNodes ...

  10. 字符串(LCT,后缀自动机):BZOJ 2555 SubString

    2555: SubString Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 1620  Solved: 471 Description 懒得写背景了 ...