Hibernate Annotaction+Spring+SqlLite

 

entity

Hibernate Annotaction+Spring+SqlLite
package com.demo.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * CodeType entity. @author MyEclipse Persistence Tools
 */

@Entity
@Table(name = "CodeType")
public class CodeType implements java.io.Serializable {

    // Fields

    @Id
    @GeneratedValue
    @Column(name = "id")
    private Integer id;
    @Column(name = "typeName")
    private String typeName;

    // Constructors

    /** default constructor */
    public CodeType() {
    }

    /** full constructor */
    public CodeType(String typeName) {
        this.typeName = typeName;
    }

    // Property accessors

    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getTypeName() {
        return this.typeName;
    }

    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }

}
View Code

 

applicationContext.xml

Hibernate Annotaction+Spring+SqlLite
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="org.sqlite.JDBC"></property>
        <property name="url"
            value="jdbc:sqlite:E:\CodeMgrSystem\SQlLiteAndHibernateDemo\CodeMgr.db">
        </property>
    </bean>
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">com.demo.dialect.SQLiteDialect</prop>
            </props>
        </property>
        <property name="annotatedClasses">
            <list>
                <value>com.demo.entity.CodeType</value>
            </list>
        </property>
    </bean>
    
    <bean class="com.demo.dao.impl.CodeTypeDaoImpl" name="codeTypeDao" >
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
</beans>
View Code


dao

Hibernate Annotaction+Spring+SqlLite
package com.demo.dao.impl;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.demo.dao.CodeTypeDao;
import com.demo.entity.CodeType;

public class CodeTypeDaoImpl extends HibernateDaoSupport implements CodeTypeDao{

    public List<CodeType> getCodeTypes() {
        return getHibernateTemplate().find("from CodeType");
    }
    
    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        CodeTypeDao dao = (CodeTypeDao) ac.getBean("codeTypeDao");
        List<CodeType> list = dao.getCodeTypes();
    
        System.out.println(list.size());
    }
}
View Code

 

 Hibernate不支持SQLite的Dialect

SQLiteDialect.java

Hibernate Annotaction+Spring+SqlLite
package com.demo.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.dialect.Dialect;
import org.hibernate.dialect.function.StandardSQLFunction;
import org.hibernate.dialect.function.SQLFunctionTemplate;
import org.hibernate.dialect.function.VarArgsSQLFunction;
import org.hibernate.Hibernate;
 
public class SQLiteDialect extends Dialect {
  public SQLiteDialect() {
    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;
  }
 
  protected 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;
  }
}
View Code

Hibernate Annotaction+Spring+SqlLite

上一篇:Oracle数据导入、导出命令


下一篇:修改xampp的mysql默认密码