对于Hibernate 底层通过JDBC-ODBC桥的方式访问ACCESS,本身并不可靠,因为hibernate源码中并没有Access的Dialect,就是说有些SQL并不能实现,或许只能最大化的模拟.网上也有些文章,去搜索引擎搜搜就出来了撒
以下是篇转载:
原文出处:http://base.blogdriver.com/base/105728.html
=================================================================Hibernate Beginning(Access)- -
                                       
初学Hibernate,不免晕晕状,下先贴一操作Access的方式:
## ACCESS
hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class sun.jdbc.odbc.JdbcOdbcDriver
hibernate.connection.url jdbc:odbc:Driver=MicroSoft Access Driver (*.mdb)};DBQ=hi.mdb
#hibernate.connection.username 
#hibernate.connection.password 
 
注:DBQ的文件用的缺省目录是container运行的BIN目录 
步骤如下:
 
1 以TOMCAT为container,用别的也成,如Resin,我觉得后者设计的比较方便,人性化吧,呵呵
 
2 安装JDK,TOMCAT,配置好能跑JSP程序,这步一般没什么问题,网上参考手册泛滥
 
3 下载Hibernate,建议参考http://www.hibernate.org.cn上面的,去看一下
 
4 这样基本就完成了环境所需要的材料了,然后再看一下
 
5 解开hibernate包, 将里面的/lib目录整个拷到/WEB-INF下面,包括'hibernate.jar'
 
6 那么下面就开始测试配置,需要一个JAVA文件和一个JSP文件,哦,这儿我抄了hibernate.org.cn上面的mnm写的那个simpleexample,不过mnm里面带的SQLServer的JDBC过期了
 
--6.1 JAVA文件:User.java  这是一个实体类文件,与DBMS里面的一个表相对应
 
  // User.java
  package demo;
  /**
   * @hibernate.class table="Users"
   * Represents a User
   */
  public class User {
    private String userID;
    private String emailAddress;
 
    /**
     * @hibernate.property column="emailAddress" type="string"
     */
    public String getEmailAddress() { return emailAddress; }
 
    /**
     * @hibernate.id generator-class="assigned" type="string"
     *               column="LogonID"
     */
    public String getUserID() { return userID; }
 
    public void setEmailAddress(String s) { emailAddress = s; }
    public void setUserID(String s) { userID = s; }
  }
 
  将本文件编译后的class文件放在/WEB-INF/classes/demo里面,同时要放进去的是映射的XML文件,如下。
 
--6.2 映射文件:User.hbm.xml 放在User同级目录下
 
  <?xml version="1.0" ?>
  <!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
      "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
  
  <hibernate-mapping>
    <class name="demo.User" table="Users" dynamic-update="false">
      <id name="userID" column="LogonID" type="java.lang.String">
        <generator class="assigned" />
      </id>
      <property name="emailAddress"
                column="EmailAddress" type="java.lang.String" />
    </class>
  </hibernate-mapping>
 
--6.3 下面是hibernate.properties的内容,该文件放在/WEB-INF/classes下面,下面是里面的内容,不过被我改了一些,只留下部分但能用的内容,呵呵,其实可以更小,只是我自己还不怎么懂吧
  ######################
  ### Query Language ###
  ######################  ## define query language constants / function names
  hibernate.query.substitutions true 1, false 0, yes 'Y', no 'N'
 
  ## package imports
  hibernate.query.imports net.sf.hibernate.test, net.sf.hibernate.eg
 
  #################
  ### Platforms ###
  #################  ## ACCESS
  hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
  hibernate.connection.driver_class sun.jdbc.odbc.JdbcOdbcDriver
  hibernate.connection.url jdbc:odbc:Driver=MicroSoft Access Driver(*.mdb)};DBQ=hi.mdb
  #hibernate.connection.username 
  #hibernate.connection.password 
 
  #################################
  ### Hibernate Connection Pool ###
  #################################  hibernate.connection.pool_size 1
  hibernate.statement_cache.size 25
  
  ##############################
  ### Miscellaneous Settings ###
  ##############################  ## print all generated SQL to the console
  hibernate.show_sql true
 
  ## specify a JDBC isolation level
  #hibernate.connection.isolation 4
 
  ## set the JDBC fetch size
  #hibernate.jdbc.fetch_size 25
 
  ## set the maximum JDBC 2 batch size (a nonzero value enables batching)
  hibernate.jdbc.batch_size 0
 
  ## enable use of JDBC 2 scrollable ResultSets (specifying a Dialect will cause Hibernate to use a sensible default)
  #hibernate.jdbc.use_scrollable_resultset true
 
  ## use streams when writing binary types to / from JDBC
  hibernate.jdbc.use_streams_for_binary true
 
  ## specify a default schema for unqualified tablenames
  #hibernate.default_schema test
 
  ## use a custom stylesheet for XML generation (if not specified, hibernate-default.xslt will be used)
  #hibernate.xml.output_stylesheet C:/Hibernate/net/sf/hibernate/hibernate-default.xslt
 
  ## enable outerjoin fetching (specifying a Dialect will cause Hibernate to use sensible default)
  #hibernate.use_outer_join false
 
  ## enable CGLIB reflection optimizer (enabled by default)
  #hibernate.cglib.use_reflection_optimizer false
 
--6.4 JSP文件:testHibernate.jsp 建立一个表在库中,并且写入两笔记录,该文件放在/WEB-INF所在目录
 
  /** testHibernate.jsp */
  <@page import="demo.*" >
  <@page import="net.sf.hibernate.Session" >
  <@page import="net.sf.hibernate.SessionFactory" >
  <@page import="net.sf.hibernate.cfg.Configuration" >
  <@page import="net.sf.hibernate.tool.hbm2ddl.SchemaExport" >
 
  <%
    try {
      Configuration cfg = new Configuration().addClass(User.class);
      SessionFactory sessions = cfg.buildSessionFactory();
      new SchemaExport(cfg).create(true,true);
      net.sf.hibernate.Session session1 =sessions.openSession();      User user=new User();
      user.setUserID("11");
      user.setEmailAddress("11");
   
      User user1= new User();
      user1.setUserID("22");
      user1.setEmailAddress("22");
   
      session1.save(user);
      session1.save(user1);
      session1.flush();
      session1.connection().commit();
      session1.close();   
    } catch (Exception e) {
      out.println("Exception: " + e.getMessage());
    }
  %>
 
6.5 下面是数据库文件,我这里想了一下,选的是ACCES,原因很简单,方便于配置,那么怎么做呐,在上面的hibernate.properties里面的mdb文件是hi.mdb,相对应的目录是Container的启动目录,如果在TOMCAT中,则是/tomcat/bin下面,Resin的话,应该是在/resin/bin的下面了吧,呵呵,怎么办,简单,就建一个空的ACCESS文件放在那里就行了。
 
OK?可能吧,什么可能性也是有的,其实上面的测试本身也是有问题,不过可以建立表,也能写数据进去,基本上也算是一个良好的起点吧,嘿嘿,启动Container,然后运行testHibernate.jsp,看一下结果,然后刷新两次,这里会出问题,我还没想好,就是不能Drop table。后面再说,如果知道怎么回事就改掉
 
什么??!!!你不知道怎么运行JSP文件?我倒,我晕,你先别看Hibernate了,呵呵,Hello world才是真的起点