Hibernate_简单实用流程

Github项目

Hibernate:
    使用步骤:
        将\hibernate-release\lib\required添置构建路径
        将sqljdbc添加构建路径
        在src下创建hibernate.cfg.xml(有模板)在hibernate开发包下
            hibernate-release-4.3.6.Final\project\documentation\src\main\
                docbook\quickstart\tutorials\basic\src\test\resources下面的hibernate.cfg.xml作例子
                主要有如下四部分配置 :
                (1)与DB的连接
                (2)可选配置
                (3)资源文件注册
                (4)二级缓存
            示例如下:

 1 <?xml version='1.0' encoding='gb2312'?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 5 <hibernate-configuration>
 6     <session-factory>
 7         <!--显示执行的SQL语句-->
 8         <property name="show_sql">true</property>
 9         <!--连接地址-->
10         <property name="connection.url">jdbc:sqlserver://127.0.0.1:1433;DatabaseName=hibernate</property>
11         <property name="connection.username">sa</property><!--连接数据库的用户名-->
12         <property name="connection.password">ea1111111111_</property><!--数据库用户密码-->
13         
14         <!--数据库驱动-->
15         <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
16         <!--JDBC连接池(使用内置的连接池)-->
17         <property name="connection.pool_size">1</property>
18         <!--设置Hibernate自动管理上下文的策略-->
19         <property name="current_session_context_class">thread</property>
20         <!--选择使用的方言-->
21         <property name="dialect">org.hibernate.dialect.SQLServer2005Dialect</property>
22         <!--在启动时删除并重新创建数据库-->
23         <property name="hbm2ddl.auto">create</property>

       <!-- <property name="hbm2ddl.auto">update</property> 
              update:
表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表;如果表里缺少列,则自动添加列 -->
       <!-- <property name="hbm2ddl.auto">update</property>
              
create-drop:启动hibernate时,自动创建表,程序关闭时,自动把相应的表都删除。所以程序结束时,表和数据也不会再存在。 --> 24 25 <mapping resource="com/base/model/Student.hbm.xml"/> <!-- 使用xml版时使用 -->
      <mapping class="com.base.model.Teacher"/>        <!-- 注解版使用class --> 26 </session-factory> 27 </hibernate-configuration>

            修改数据库连接地址,用户名,密码,与使用的方言

    

 

 


        创建model层
        创建model映射配置文件**.hbm.xml
            1:与被描述的类同名 ,如:UserModel.hbm.xml
            2:存放位置与所描述类存放在同一文件夹下
            3:主要有如下四部分配置 :
            (1)类和表的映射
            (2)主键的映射
            (3)类的属性和DB中字段的映射
            (4)关系的映射
        在hibernate开发包下:hibernate-release-4.3.6.Final\project\documentation\src\main\
            docbook\quickstart\tutorials\basic\src\test\java\org\hibernate\tutorial\hbm
            下面的Event.hbm.xml作例子
        示例如下:

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="org.hibernate.tutorial.hbm">    <!-- 包名 -->
 7 
 8     <class name="Event" table="EVENTS">    <!-- 类名与对应的数据表名 -->
 9         <id name="id" column="EVENT_ID">    <!-- 设置主键, 对应model与数据库中名称 -->
10             <generator class="increment"/>    <!-- 设置自增-->
11         </id>
12         <property name="date" type="timestamp" column="EVENT_DATE"/>  <!--普通字段  -->
13         <property name="title"/>         
      <!-- <many-to-one name="c" column="classId" class="com.base.model.Class"></many-to-one>   //数据库中的外键 -->
14 </class> 15 16 </hibernate-mapping>

 



        测试类: test

 1 public class StudentTest {
 2 
 3     /**
 4      * @param args
 5      */
 6     public static void main(String[] args) {
 7         // TODO 自动生成的方法存根
 8         Configuration configuration = new Configuration();     //实例化配置文件
 9         ServiceRegistry serviceRegistry =         //实例化服务登记
10             new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
11             //applySettings(
12             //configuration.getProperties()).build();
13 //        SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);    //获取session工厂(出错,原因未明)
14 
15         SessionFactory sessionFactory = null;          //获取session工厂
16         final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();  
17             try {  
18                 sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();  
19             } catch (Throwable ex) {  
20                 // Log the exception.   
21                 System.err.println("对不起数据工厂构建失败." + ex);  
22                 throw new ExceptionInInitializerError(ex);  
23             }  
24         
25         
26         //只有通过session才能进行对象的操作, 获得持久化
27         Session session = sessionFactory.openSession();    //生成一个新的session
28         session.beginTransaction();    //开启事物
29 
30         Student s = new Student();        //创建一个学生
31         s.setName("张三");            //设置名称
32         session.save(s);              //保存学生
33         ...
34 
35         session.getTransaction().commit();    //提交事务
36         session.close();    //关闭session
37         sessionFactory.close();    //关闭session工厂
38     }
39 }

 

posted @ 2014-11-19 01:44  四点水这  阅读(341)  评论(0编辑  收藏  举报