对于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才是真的起点
以下是篇转载:
原文出处: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才是真的起点
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货