当需要使用支持事务的数据库方言,并且使用了mysql 5.5及以上版本时,需要将数据库方言配置为
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
注意是MySQL5InnoDBDialect,而不是MySQLInnoDBDialect,否则不能自动建表。
另外附上各种数据库对应的方言:
数据库
|
方言(Dialect)
|
DB2
|
org.hibernate.dialect.DB2Dialect
|
DB2 AS/400
|
org.hibernate.dialect.DB2400Dialect
|
DB2 OS390
|
org.hibernate.dialect.DB2390Dialect
|
PostgreSQL
|
org.hibernate.dialect.PostgreSQLDialect
|
MySQL5
|
org.hibernate.dialect.MySQL5Dialect
|
MySQL5 with InnoDB
|
org.hibernate.dialect.MySQL5InnoDBDialect
|
MySQL
with MyISAM
|
org.hibernate.dialect.MySQLMyISAMDialect
|
Oracle
(any version)
|
org.hibernate.dialect.OracleDialect
|
Oracle 9i
|
org.hibernate.dialect.Oracle9iDialect
|
Oracle 10g
|
org.hibernate.dialect.Oracle10gDialect
|
Oracle 11g
|
org.hibernate.dialect.Oracle10gDialect
|
Sybase
|
org.hibernate.dialect.SybaseASE15Dialect
|
Sybase Anywhere
|
org.hibernate.dialect.SybaseAnywhereDialect
|
Microsoft SQL Server 2000
|
org.hibernate.dialect.SQLServerDialect
|
Microsoft SQL Server 2005
|
org.hibernate.dialect.SQLServer2005Dialect
|
Microsoft SQL Server 2008
|
org.hibernate.dialect.SQLServer2008Dialect
|
SAP DB
|
org.hibernate.dialect.SAPDBDialect
|
Informix
|
org.hibernate.dialect.InformixDialect
|
HypersonicSQL
|
org.hibernate.dialect.HSQLDialect
|
H2 Database
|
org.hibernate.dialect.H2Dialect
|
Ingres
|
org.hibernate.dialect.IngresDialect
|
Progress
|
org.hibernate.dialect.ProgressDialect
|
Mckoi SQL
|
org.hibernate.dialect.MckoiDialect
|
Interbase
|
org.hibernate.dialect.InterbaseDialect
|
Pointbase
|
org.hibernate.dialect.PointbaseDialect
|
FrontBase
|
org.hibernate.dialect.FrontbaseDialect
|
Firebird
|
org.hibernate.dialect.FirebirdDialect
|
当需要使用支持事务的数据库方言,并且使用了mysql 5.5及以上版本时,需要将数据库方言配置为org.hibernate.dialect.MySQL5InnoDBDialect 注意是MySQL5InnoDBDialect,而不是MySQLInnoDBDialect,否则不能自动建表。 另外附上各种数据库对应的方言:数据库
Hibernate
连接SQLite
配置
步骤:
1、添加SQLite库:
1.1、将两个jar包:com.zy.
hibernate
.dialect.SQLiteDialect.jar、sqlite-jdbc-3.7.2.jar拷贝到“\WEB-INF\lib”文件夹下;
2、
配置
hibernate
:
2.1、将“
hibernate
\
hibernate
.cfg.xml”拷贝到“\WEB-INF\classes”文件夹下,替换原先的文件。
2.2、打开此文件,将“jdbc:sqlite:D:/EGSDatabase.egsdata”一行中的
数据库
文件("D:/EGSDatabase.egsdata")修改为合适的
数据库
文件。
注:附件包含了com.zy.
hibernate
.dialect.SQLiteDialect.jar的源代码
Oracle、MySQL和PostgreSQL等关系型
数据库
中基本都支持标准SQL,虽然SQL的基本语法在这些
数据库
中是类似的,但是在一些特定的功能和语法上仍然存在差异。
在MySQL和PostgreSQL中,可以使用LIMIT和OFFSET关键字来实现分页查询(限制SELECT语句返回结果行数)的操作,而Oracle中则需要使用ROWNUM或者ROW_NUMBER()函数实现。
Hibernate
底层依然使用SQL语句来执行
数据库
操作,虽然所有关系型
数据库
都支持使用标准SQL语句,但所有
数据库
都对标准SQL进行了一些扩展,所以在语法细节上存在一些差异,因此
Hibernate
需要根据
数据库
来识别这些差异。
举例来说,我们在MySQL
数据库
里进行分页查询,只需使用limit关键字就可以了;而标准SQL并不支持limit关键字,例如Oracle则需要使用行内视图的方式来进
安装PostgreSQL之后,PostgreSQL会创
建
一个名为“postgres”的用户,创
建
一个名为“postgres”的
数据库
。我们就可以使用这个默认的库做实验。
首先
建
表
并插入数据:
CREATE TABLE public.user(
ID SERIAL PRIMARY KEY NOT NULL,
UserID varchar(100) NOT NULL,
UserName varc...
2. 在
Hibernate
配置
文件中
配置
MySQL
数据库
的连接信息,包括
数据库
URL、用户名、密码等。
3. 在Java代码中使用
Hibernate
API来连接MySQL
数据库
,执行SQL语句或者操作
数据库
。
例如,以下是
Hibernate
配置
文件中连接MySQL
数据库
的示例:
<
hibernate
-configuration>
<session-factory>
<property name="
hibernate
.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="
hibernate
.connection.url">jdbc:mysql://localhost:3306/mydatabase</property>
<property name="
hibernate
.connection.username">root</property>
<property name="
hibernate
.connection.password">password</property>
<property name="
hibernate
.dialect">org.
hibernate
.dialect.MySQLDialect</property>
<property name="
hibernate
.show_sql">true</property>
</session-factory>
</
hibernate
-configuration>
其中,`
hibernate
.connection.driver_class`指定MySQL驱动程序的类名,`
hibernate
.connection.url`指定
数据库
的URL,`
hibernate
.connection.username`和`
hibernate
.connection.password`指定
数据库
的用户名和密码,`
hibernate
.dialect`指定
Hibernate
使用的MySQL
方言
,`
hibernate
.show_sql`指定是否在控制台输出SQL语句。
连接MySQL
数据库
后,可以使用
Hibernate
API来操作
数据库
,例如:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
// 执行SQL语句或者操作
数据库
tx.commit();
session.close();
其中,`sessionFactory`是
Hibernate
的会话工厂,`session`是
Hibernate
的会话对象,`tx`是
Hibernate
的事务对象。在事务中执行SQL语句或者操作
数据库
,最后提交事务并关闭会话。