Chinaunix首页 | 论坛 | 博客
  • 博客访问: 371011
  • 博文数量: 28
  • 博客积分: 455
  • 博客等级: 下士
  • 技术积分: 445
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-09 11:10
文章分类

全部博文(28)

文章存档

2016年(5)

2014年(1)

2013年(10)

2011年(7)

2010年(5)

我的朋友

分类: Java

2016-01-22 20:34:50

1、首先在Eclipse中新建java工程
2、加入需要的jar包
   包括hibernate required jar包
   要启用ehcache二级缓存的话,加入ehcache相关jar包
   加入日志相关jar包log4j啥的
   当然作为一个orm框架,还需要数据库jdbc驱动,大概就是这些了
   
    

3、新建实体类,然后可以使用eclipse 的hibernate tools插件,来生成hbm.xml文件,例如下面就是3个实体类和3个hbm.xml文件


4、新建hibernate配置文件hibernate.cfg.xml


点击(此处)折叠或打开

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3.         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4.         "">
  5. <hibernate-configuration>
  6.     <session-factory>
  7.         <!-- 数据库连接配置 -->
  8.         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  9.         <property name="hibernate.connection.url">jdbc:mysql:///test</property>
  10.         <property name="hibernate.connection.username">root</property>
  11.         <property name="hibernate.connection.password">password</property>
  12.         
  13.         <!-- 数据库方言设置 -->
  14.         <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
  15.         <!-- 事务的隔离级别 -->
  16.         <!--
  17.         1. READ UNCOMMITED
  18.         2. READ COMMITED
  19.         4. REPEATABLE READ
  20.         8. SERIALIZEABLE
  21.          -->
  22.         <property name="hibernate.connection.isolation">2</property>
  23.         
  24.         <!-- 是否打印sql以及格式化sql语句 -->
  25.         <property name="hibernate.show_sql">true</property>
  26.         <property name="hibernate.format_sql">true</property>
  27.         
  28.         <!-- hibnernate帮忙生成数据表的策略:update会按照实体类更新表接口 -->
  29.         <!--
  30.         create : 会根据 .hbm.xml 文件来生成数据表, 但是每次运行都会删除上一次的表 ,重新生成表, 哪怕二次没有任何改变
  31.         create-drop : 会根据 .hbm.xml 文件生成表,但是SessionFactory一关闭, 表就自动删除
  32.         update : 最常用的属性值,也会根据 .hbm.xml 文件生成表, 但若 .hbm.xml 文件和数据库中对应的数据表的表结构不同, Hiberante 将更新数据表结构,但不会删除已有的行和列
  33.         validate : 会和数据库中的表进行比较,.hbm.xml 文件中的列在数据表中不存在,则抛出异常
  34.          -->
  35.         <property name="hibernate.hbm2ddl.auto">update</property>
  36.         
  37.         <!-- 启用二级缓存和查询缓存 -->
  38.         <property name="hibernate.cache.use_second_level_cache">true</property>
  39.         <property name="hibernate.cache.use_query_cache">true</property>
  40.         
  41.         <!-- 二级缓存 -->
  42.         <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
  43.         
  44.         <!-- Session 对象的生命周期与本地线程绑定 -->
  45.         <property name="hibernate.current_session_context_class">thread</property>
  46.         
  47.         <!-- 映射文件 -->
  48.         <mapping resource="com/blank/hibernate/entity/Customer.hbm.xml"/>
  49.         <mapping resource="com/blank/hibernate/entity/Region.hbm.xml"/>
  50.         <mapping resource="com/blank/hibernate/entity/Department.hbm.xml"/>
  51.         
  52.         <class-cache usage="read-write" class="com.blank.hibernate.entity.Customer"/>
  53.         <class-cache usage="read-write" class="com.blank.hibernate.entity.Region"/>
  54.         <class-cache usage="read-write" class="com.blank.hibernate.entity.Department"/>
  55.         
  56.     </session-factory>
  57. </hibernate-configuration>

5、偷懒,从hibernate下载的压缩包里面把ehcache.xml和log4j.properties文件复制到src目录下



6、然后就可以写测试代码了

基本上是这个步骤来写测试代码
 1)、获取 Configuration 对象
 2)、获取 SessionFactory 对象

以上两步Hibernate5.0是这样的

点击(此处)折叠或打开

  1. final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
  2.                 .configure() // configures settings from hibernate.cfg.xml
  3.                 .build();
  4.         sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory();


而Hibernate4.0则是这样的

点击(此处)折叠或打开

  1. Configuration configuration = new Configuration()
  2.                     .configure("hibernate.cfg.xml");
  3.             ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
  4.                     .applySettings(configuration.getProperties()).build();
  5.             SessionFactory sessionFactory = configuration
  6.                     .buildSessionFactory(serviceRegistry);



 3)、获取 Session,打开事务

点击(此处)折叠或打开

  1. session = sessionFactory.getCurrentSession();
  2. transaction = session.beginTransaction();


 4)、用面向对象的方式操作数据库
    例如,save啦,get啦、find啦什么的
 5)、关闭事务,关闭 Session


点击(此处)折叠或打开

  1. transaction.commit();
  2. session.close();
  3. sessionFactory.close();





阅读(1465) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~