Hibernate的设计思路

Hibernate是一种全自动化管理持久化对象的ORM框架,既提供了完全面向对象的封装完整的对象持久化接口(屏蔽db层的差异化,提升代码可移植性),也提供了操作HQL和SQL的半自动化DB访问接口(提供复杂查询的扩展性)。

配置hibernate.cfg.xml和***.hbm.xml文件

文件hibernate.cfg.xml是Hibernate的核心配置文件,用于定义Hibernate与DB交互的核心配置,文件**.hbm.xml是定义多个对象与DB table的映射关系和更新规则。

创建一个典型的hibernate.cfg.xml文件配置如下:

 <hibernate-configuration>
<!-- 一个session-factory节点代表一个数据库 -->
<session-factory>
<!-- 1. 数据库连接配置 -->
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/ychenDemo
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<!-- 2. 根据不同的db方言生成符合当前db语法的sql-->
<property name="hibernate.dialect">
org.hibernate.dialect.MySQL5Dialect
</property>
<!-- 3. 显示hibernate在运行时候执行的sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 4. 格式化sql -->
<property name="hibernate.format_sql">true</property>
<!-- 5. 如果没有表则创建,如果有则更新 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 6. 引入ORM对象定义文件 -->
<mapping resource="com/leo/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

对于hibernate.hbm2ddl.auto而言有四种配置值:
#1 create-drop:程序执行开始重新创建新表,程序执行结束则删除所有的数据和表结构;
#2 create:程序执行开始重新创建新表;
#3 update:推荐值,程序执行开始会检查表是否存在,如果不存在则创建新表,如果存在则检查表结构是否跟配置文件一致,如果不一致则更新表结构;
#4 validate:程序开始会检查表是否存在,如果不存在或者表结构不一致,则会抛异常;

创建基于DBCP PooledDataSource和Spring TxManager的hibernateSessionFactory如下,其中最后三个配置项表示开启并使用二级缓存,factory_class依赖Ehcache,可以有两种选择,EhCacheRegionFactory和SingletonEhCacheRegionFactory,前者用于一个app中支持多个dataSource的场景,后者仅支持一个dataSource的场景,hibernate-ehcache.xml用于配置二级缓存具体的策略;

 <!-- Using DBCP as pooled data source -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.pwd}"/>
<property name="defaultAutoCommit" value="true"/>
<property name="initialSize" value="10000"/>
<property name="maxActive" value="10000"/>
<property name="maxIdle" value="10000"/>
<property name="minIdle" value="10000"/>
<property name="maxWait" value="10000"/>
</bean> <!-- Using spring transaction -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="hibernateSessionFactory"/>
</bean> <tx:annotation-driven transaction-manager="transactionManager"/> <!-- Configuring sessionFactory -->
<bean id="hibernateSessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>
<value>META-INF/hibernate-named-query.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
com.active.services.persistence.SQLServer2005Dialect
</prop>
<prop key="hibernate.hbm2ddl.auto">none</prop>
<prop key="hibernate.connection.release_mode">auto</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.use_sql_comments">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.jdbc.use_scrollable_resultset">true</prop>
<prop key="hibernate.jdbc.use_streams_for_binary">true</prop>
<prop key="hibernate.jdbc.batch_size">100</prop>
<prop key="hibernate.cache.region_prefix">hibernate.cache</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.region.factory_class">
net.sf.ehcache.hibernate.EhCacheRegionFactory
</prop>
<prop key="net.sf.ehcache.configurationResourceName">
META-INF/hibernate-ehcache-config.xml
</prop>
</props>
</property>
</bean>

Hibernate的核心配置的更多相关文章

  1. 二 SSH整合:Spring整合Hibernate,无障碍整合&无核心配置整合,Hibernate模版常用方法,

    重建SSH项目 java项目可以直接复制,但是web项目除了改名字还要该配置,如下: 方式一:无障碍整合:带Hibernate配置文件 <?xml version="1.0" ...

  2. hibernate核心配置

    # hibernate核心配置 注意:  - hibernate.cfg.xml默认放在src目录下(这样可以自动加载该文件) - 必须配置的参数:   * 数据库的四大参数和方言  - 可选配置的参 ...

  3. Hibernate的核心API

    Configuration:负责管理Hibernate的配置信息 1.加载核心配置文件 核心配置有两种: hibernate.properties 加载:Configuration configura ...

  4. hibernate进阶--一对多映射配置

    hibernate作为一款优秀的ORM框架,广受大家喜爱,也被Java社区公认为持久层的首选.虽然jdbc为Java数据库操 作带来了诸多便利,但是并没有统一SQL语句的写法,而且具体操作数据库的代码 ...

  5. hibernate系列笔记(2)---Hibernate的核心API

    Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...

  6. SpringMVC+Apache Shiro+JPA(hibernate)整合配置

    序: 关于标题: 说是教学,实在愧不敢当,但苦与本人文笔有限,实在找不到更合理,谦逊的词语表达,只能先这样定义了. 其实最真实的想法,只是希望这个关键词能让更多的人浏览到这篇文章,也算是对于自己写文章 ...

  7. hibernate框架(2)---Hibernate的核心API

    Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...

  8. hibernate框架入门配置

    1.新建一个项目(可以是java项目,也可以是webapp) 2.导入jar包,包括日志,mysql驱动,必备request包,jpa配置规范包 3.创建实体类 1.创建数据库,使用hibernate ...

  9. Hibernate之核心文件

    一个Hibernate项目核心配置文件主要分为以下三个方面:1.配置文件hibernate.cfg.xml:2.配置文件*.hbm.xml,此文件一般包括映射文件的结构以及各种属性的映射方式:3.Hi ...

随机推荐

  1. Hmz 的女装(递推)

    Hmz 的女装 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Sub ...

  2. BFS+PRIM

    转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299324104 在一个y行 x列的迷宫中,有可行走的通路空格' ',不可行走的墙'#', ...

  3. mac的日常使用总结

    目录 有一个github的仓库:(强烈推荐) 不推荐的但是可以试试的一些链接: # 关于mac book的使用教程 github简直是一个宝藏,发现好多各种好玩的东西, 爱了爱了, 开源一定是未来, ...

  4. SpringBoot的配置文件加载顺序以及如何获取jar包里的资源路径

    一.读取配置文件的四种方式 这四种配置文件放置方式的读取优先级依次递减,具体可以查看官方文档. 1.1jar包同级目录下的config文件夹里的配置文件 其实我以前就见过这种方式了,只是不知道怎么做的 ...

  5. 用sublime text3 直接编译C/C++,java

    首先你得下载好 这是我之前安装codeblocks时留下的里面有cpp,c++,gcc,g++. 第二步就是建立环境变量 这三个配置完成就ok 了 然后进入sublime text 3中,找到工具(t ...

  6. Python基础知识(1)

    Python 3 1:print:输出信息    例子:   ( 所有的标点符号都要是英文状态下输入,要不然会报错) print(“hello world”) 2:注意 : python 和 pyth ...

  7. Codeforces Round #410 (Div. 2) A

    Description Mike has a string s consisting of only lowercase English letters. He wants to change exa ...

  8. pyinstaller打包遇到的错误处理

    在python环境中运行中没问题,但打包时遇到以下问题 1.有时打包出现 UnicodeDecodeError错误, 可以改变cmd的编码(暂且这么叫),在cmd 中输入 chcp 65001,再次打 ...

  9. idea安装mybatis插件

    简介 mybatis_plus主要的作用是自动导航,如下图 点击箭头会跳转到对应的dao接口中,同样,dao接口中也有这样的箭头,点击之后会跳转到对应的sql映射语句处. 还有一个功能就是检查mapp ...

  10. ASP.NET MVC5的一个轻量级的框架学习的第一天

    第二步第三部 这是第一天的小试成功,怪自己太笨了,一个错排查好久,还好有源码看着了解,后续还得多努力,