Hibernate知识点总结
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知识点总结的更多相关文章
- Hibernate知识点总结(一)
前言:学习的过程在于不断的总结与思考,这里记下笔者在学习过程中,所遇到的知识点,增加对框架掌握的熟悉程度. 1.环境的搭建 通过maven可以轻松搭建hibernate的环境. <propert ...
- Hibernate知识点小结(三)-->一对多与多对多配置
一.多表关系与多表设计 1.多表关系 一对一: 表的设计原则(分表原则): 优化表的性能 基于语意化分表 ...
- Hibernate知识点整理
一, Hibernate 介绍: Hibernate 只是一个将持久化类与数据库表相映射的工具,每个持久化类实例均对应于数据库表中的一个数据行而已.用户只需直接使用面向对象的方法操作此持久化类实例,即 ...
- Hibernate 知识点梳理
1.对持久化对象的要求 1)提供一个无参构造器 2)提供一个标识属性,如id,通常映射为数据库表的主键字段. 3)为持久化类的字段提供get.set方法. 注:但不一定所有字段都这么做,对于不提供ge ...
- hibernate知识点理解
1.只有业务逻辑层出现的问题? 1.切换数据库麻烦 2.sql编写起来麻烦 3.我们的程序员不需要关注数据库,只希望关心业务本身 2.hibernate的好处 1.程序员只关心业务逻辑,使角色更加清楚 ...
- Hibernate 知识点复习
核心接口 1 Configuration接口负责配置并启动Hibernate,创建SessionFactory对象 2 SessionFactory接口负责初始化Hibernate.它充当数据存储 ...
- Hibernate知识点小结汇总
Hibernate部分 1.为什么要使用Hibernate开发你的项目呢?Hibernate的开发流程是怎么样的? 为什么要使用 ①.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复 ...
- Hibernate知识点小结(四)--JPA
一.jpa的简介和入门 JPA:Java Persistence API,接口规范 Hinernate内部为JPA规范提供实现 开发步骤(EntityManager): ...
- Hibernate知识点小结(二)
一.持久化对象和标识符 1.持久化类 配置完关系后,操作的实体对应的类,成为持久化类 (Customer) 2.持久化类标识符(oid:object id) 3.持久 ...
随机推荐
- iPhone、iPad默认按钮样式问题
iPhone.iPad默认按钮样式问题 解决方法给按钮元素添加一个-webkit-appearance: none;具体代码 input[type="button"], input ...
- php基础知识【函数】(6)mysql数据库
一.连接和关闭 1.mysql_connect('example.com:3307', 'root', '123456') --打开一个到 MySQL 服务器的非永久连接 2.mysql_pconne ...
- yum版本新增包的一般步骤
在Jekins的自动构建环境中,有时会有在构建出的ISO中添加新应用app需求,对于采用rpm包源代码管理方式的构建环境来说,基本步骤如下: 1.下载app的src.rpm包 2.解压src.rpm包 ...
- HDU 5166(缺失数查找输出)
HDU 5166 Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Description T ...
- IOS“多继承”
转自念茜的博客: 当单继承不够用,很难为问题域建模时,我们通常都会直接想到多继承.多继承是从多余一个直接基类派生类的能力,可以更加直接地为应用程序建模.但是Objective-C不支持多继承,由于消息 ...
- ALAsset和ALAssetRepresentation
ALAsset类代表相册中的每个资源文件,可以通过它获取资源文件的相关信息还能修改和新建资源文件,ALAssetRepresentation类代表相册中每个资源文件的详细信息,可以通过它获取资源的大小 ...
- TortoiseSVN 的分支合并操作
今天对svn的分支合并有了兴趣,所以对新建了一个项目练练手. 在网上找了一篇文章做指导: http://www.open-open.com/lib/view/open1346982569725.htm ...
- 简述MVC思想 与PHP如何实现MVC
我相信已经有很多这样的文章了,但是我今天还是愿意把自己的经验与大家分享一下.纯属原创,我也没什么保留,希望对新手有帮助,有说的不对的地方,也欢迎指出. 什么是MVC? 简单的说就是将网站源码分类.分层 ...
- oracle存储过程 --1
一,oracle存储过程语法 1.oracle存储过程结构 CREATE OR REPLACE PROCEDURE oracle存储过程名字 ( 参数1 IN NUMBER, 参 ...
- 【转】Android与JNI(二) -- 不错
原文网址:http://www.cnblogs.com/eddy-he/archive/2012/08/09/2629974.html 软件版本: ubuntu10.04 java version & ...