现在的位置: 首页 > 综合 > 正文

Hibernate资源共享基础之WEB部署

2013年08月28日 ⁄ 综合 ⁄ 共 3003字 ⁄ 字号 评论关闭

Author:ZhangGuozhong
Date:2007-5-12

1.为什么要使用Hibernate?

  有对比才有问题,才会看出原因?
  在以前所用的JDBC数据库方面时,我们会发现:
 
   1).在业务逻辑中混合JDBC..即操作大量的sql语句.
   2).数据库迁移或者改变时,就要修改大量的代码.
   3).当底层改变时,也须要修改大量的程序.
   4).在调试时,工作量也很大.
 
  基于以上四点不难看出,问题就在于耦合程度高.而Hibernate的出现,也就是在于提供一个持久化层,用来解耦!

2.持久化层(对象---关系)
 
   其实写持久化层,也就是在写持久化类,建立对象关系映射(ORM映射).
   Hibernate让普通的Java对象变成持久化类。一个持久化类很像JavaBean,属性通过get和set方法访问,对外隐藏了内部实现的细节.(初次理解,就可当为实体Bean来使用).
   Hibernate对属性使用的类型不加限制。所有的Java JDK类型和原始类型(比如String,char和float)都可以被映射,也包括Java集合框架中的类。可以把它们映射成为值,值集合,或者与其他实体相关联。id是一个特殊的属性,代表了这个类的数据库标识符(主键),它对于类似于Cat这样的实体是必需的(详见后面XML配置)。

   持久化类不需要实现什么特别的接口,也不需要从一个特别的持久化根类继承下来。Hibernate也不需要使用任何编译器处理,比如字节码增强操作,它独立的使用Java反射机制和运行时类增强(通过CGLIB)。所以,在Hibernate中,持久化类的类不需要任何前提条件,我们就可以把它射成为数据库表(详见XML)。

  那么到底如何在配置文件XML中配置中,想必都期待己久了吧,呵,我们慢慢来...
 
  XML配置实体与数据库的映射(ORM.xml):
  <?xml version="1.0"?>
 <!DOCTYPE hibernate-mapping
    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>

    <class name="net.sf.hibernate.examples.quickstart.Cat" table="CAT">
        <id name="id" type="string" unsaved-value="null" >
            <column name="CAT_ID" sql-type="char(32)" not-null="true"/>
            <generator class="increment"/>
        </id>
        <property name="name">
            <column name="NAME" sql-type="varchar(16)" not-null="true"/>
        </property>
        <property name="sex"/>
        <property name="weight"/>
    </class>
</hibernate-mapping>
 
说明:

    XML声明不必去研究,我们一起来看hibernate-mapping之间的内容,大家知道,我们要做的是关于实体与数据库的映射,那么就必然有一个实体类与数据库中的某一张表去映射,这样才会一一对映.对吧?所以在class标记中name属性为所要映射的实体类名,table为所要映射的数据库表

名....go on
    这样一来,我们再看class标记下面的内容:
     1).首选是id标记,id也就是上面所说的"id是一个特殊的属性,代表这个类中的主键id---即实体中的主键id,clolumn的name属性为数据库中字段的名.亦可写成<id name="id" column="CAT_ID" type="string"> 即将实体与数据库对映字段写入一个标记中.
     2).generator标记:
 Hiernate附带了几种不同的标识符生成器,用于不同的场合(包括数据库本地的顺序(sequence)生成器和hi/lo高低位标识模式)。我们在这里使用increment生成器,并指定CAT表的CAT_ID字段(作为表的主键)存放生成的标识值(知道就可以了,不用多研究)。
     3).接下来就是要对数据库中其它字段与实体进行映射:
        property标记.可以如上写,亦可写成简单模式:<property name="name" column="NAME" type="string" not-null="true"/>其它的对应sex,weight...

2.
    WEB服务器配置:

    1.建立web的Hibernate工程,还要导入相应的.jar包,如果用JCreater练手,那么就要手动导入,类似于导servletApi.jar包一样,如果没有,呵,找老师或者找同学要一下吧...
    2.连接配置文件:hibernate.properties文件,将hibernate.properties文件存放到web工程WEB-INF/classes/根目录下
       1).如果是桥连,将下面文件写入到hibernate.properties里.(.properties为文件后缀名)

 hibernate.dialect=net.sf.hibernate.dialect.SQLServerDialect
 hibernate.connection.driver_class=sun.jdbc.odbc.JdbcOdbcDriver
 hibernate.connection.url=jdbc:odbc:数据源名
 hibernate.connection.username=sa
 hibernate.connection.password=
 hibernate.show_sql=truehibernate.properties

       2).如果是直连,同上,改变内容

 hibernate.dialect=net.sf.hibernate.dialect.SQLServerDialect
 hibernate.connection.driver_class=com.microsoft.jdbc.sqlserver.SQLServerDriver
 hibernate.connection.url=jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=数据库名
 hibernate.connection.username=sa
 hibernate.connection.password=
 hibernate.show_sql=true
     3.实体与库表(ORM.xml)文件放在字节码文件下:即java源文件经过编辑之后,生成的.class所在包中,并且要配置到当前所映射的实体包下的.class所在包中.

 

 

抱歉!评论已关闭.