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 }

 

你可能感兴趣的:(Hibernate)