欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

使用Hibernate连接sqlite示例,hibernatesqlite,hibernate用于s

来源: javaer 分享于  点击 30667 次 点评:254

使用Hibernate连接sqlite示例,hibernatesqlite,hibernate用于s


hibernate用于sqlite的方言

配置范例:

<?xml version="1.0" encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>    <session-factory>        <property name="connection.driver_class">org.sqlite.JDBC</property>        <property name="connection.url">jdbc:sqlite:data/money.dat</property>        <property name="connection.pool_size">1</property>        <property name="dialect">com.kksoft.hibernate.dialect.SQLiteDialect</property>        <property name="current_session_context_class">thread</property>        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>        <property name="show_sql">true</property>        <property name="connection.autoReconnect">true</property>                <property name="connection.autoReconnectForPools">true</property>                <property name="connection.is-connection-validation-required">true</property>                <property name="hbm2ddl.auto">update</property>            <mapping resource="user.hbm.xml"/>    </session-factory></hibernate-configuration>

SQLiteDialect.java

package com.kksoft.hibernate.dialect;/* * The author disclaims copyright to this source code. In place of * a legal notice, here is a blessing: *  * May you do good and not evil. * May you find forgiveness for yourself and forgive others. * May you share freely, never taking more than you give. * */import java.sql.Types;import org.hibernate.Hibernate;import org.hibernate.dialect.Dialect;import org.hibernate.dialect.function.SQLFunctionTemplate;import org.hibernate.dialect.function.StandardSQLFunction;import org.hibernate.dialect.function.VarArgsSQLFunction;public class SQLiteDialect extends Dialect {    public SQLiteDialect() {        super();        registerColumnType(Types.BIT, "integer");        registerColumnType(Types.TINYINT, "tinyint");        registerColumnType(Types.SMALLINT, "smallint");        registerColumnType(Types.INTEGER, "integer");        registerColumnType(Types.BIGINT, "bigint");        registerColumnType(Types.FLOAT, "float");        registerColumnType(Types.REAL, "real");        registerColumnType(Types.DOUBLE, "double");        registerColumnType(Types.NUMERIC, "numeric");        registerColumnType(Types.DECIMAL, "decimal");        registerColumnType(Types.CHAR, "char");        registerColumnType(Types.VARCHAR, "varchar");        registerColumnType(Types.LONGVARCHAR, "longvarchar");        registerColumnType(Types.DATE, "date");        registerColumnType(Types.TIME, "time");        registerColumnType(Types.TIMESTAMP, "timestamp");        registerColumnType(Types.BINARY, "blob");        registerColumnType(Types.VARBINARY, "blob");        registerColumnType(Types.LONGVARBINARY, "blob");        // registerColumnType(Types.NULL, "null");        registerColumnType(Types.BLOB, "blob");        registerColumnType(Types.CLOB, "clob");        registerColumnType(Types.BOOLEAN, "integer");        registerFunction("concat", new VarArgsSQLFunction(Hibernate.STRING, "",                "||", ""));        registerFunction("mod", new SQLFunctionTemplate(Hibernate.INTEGER,                "?1 % ?2"));        registerFunction("substr", new StandardSQLFunction("substr",                Hibernate.STRING));        registerFunction("substring", new StandardSQLFunction("substr",                Hibernate.STRING));    }    public boolean supportsIdentityColumns() {        return true;    }    /*     public boolean supportsInsertSelectIdentity() {     return true; // As specify in NHibernate dialect     }     */    public boolean hasDataTypeInIdentityColumn() {        return false; // As specify in NHibernate dialect    }    /*     public String appendIdentitySelectToInsert(String insertString) {     return new StringBuffer(insertString.length()+30). // As specify in NHibernate dialect     append(insertString).     append("; ").append(getIdentitySelectString()).     toString();     }     */    public String getIdentityColumnString() {        // return "integer primary key autoincrement";        return "integer";    }    public String getIdentitySelectString() {        return "select last_insert_rowid()";    }    public boolean supportsLimit() {        return true;    }    public String getLimitString(String query, boolean hasOffset) {        return new StringBuffer(query.length() + 20).append(query).append(                hasOffset ? " limit ? offset ?" : " limit ?").toString();    }    public boolean supportsTemporaryTables() {        return true;    }    public String getCreateTemporaryTableString() {        return "create temporary table if not exists";    }    public boolean dropTemporaryTableAfterUse() {        return false;    }    public boolean supportsCurrentTimestampSelection() {        return true;    }    public boolean isCurrentTimestampSelectStringCallable() {        return false;    }    public String getCurrentTimestampSelectString() {        return "select current_timestamp";    }    public boolean supportsUnionAll() {        return true;    }    public boolean hasAlterTable() {        return false; // As specify in NHibernate dialect    }    public boolean dropConstraints() {        return false;    }    public String getAddColumnString() {        return "add column";    }    public String getForUpdateString() {        return "";    }    public boolean supportsOuterJoinForUpdate() {        return false;    }    public String getDropForeignKeyString() {        throw new UnsupportedOperationException(                "No drop foreign key syntax supported by SQLiteDialect");    }    public String getAddForeignKeyConstraintString(String constraintName,            String[] foreignKey, String referencedTable, String[] primaryKey,            boolean referencesPrimaryKey) {        throw new UnsupportedOperationException(                "No add foreign key syntax supported by SQLiteDialect");    }    public String getAddPrimaryKeyConstraintString(String constraintName) {        throw new UnsupportedOperationException(                "No add primary key syntax supported by SQLiteDialect");    }    public boolean supportsIfExistsBeforeTableName() {        return true;    }    public boolean supportsCascadeDelete() {        return false;    }    /**     * 修复分页bug     * @author Z.kc     */    @Override    public boolean bindLimitParametersInReverseOrder() {        return true;    }}
相关栏目:

用户点评