hibernate3 or hibernate4+spring3.1+SQLite Annotation configuration

hibernate3 or hibernate4+spring3.1+SQLite Annotation 
configuration

entity

hibernate3 or hibernate4+spring3.1+SQLite Annotation 
configuration
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
    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

SQLiteDialect.java

hibernate3 or hibernate4+spring3.1+SQLite Annotation 
configuration
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.type.StandardBasicTypes;
import org.hibernate.type.StringType;

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(StandardBasicTypes.STRING, "", "||", "") );
    registerFunction( "mod", new SQLFunctionTemplate( StringType.INSTANCE, "?1 % ?2" ) );
    registerFunction( "substr", new StandardSQLFunction("substr",StandardBasicTypes.STRING) );
    registerFunction( "substring", new StandardSQLFunction( "substr", StandardBasicTypes.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

 

hibernate4 applicationContext.xml

hibernate3 or hibernate4+spring3.1+SQLite Annotation 
configuration
<?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:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"

    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
     http://www.springframework.org/schema/tx
     http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
     
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.1.xsd">

    <!-- xmlns:p="http://www.springframework.org/schema/p" -->
    <context:annotation-config />
    <context:component-scan base-package="com.demo">
    </context:component-scan>
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="url" value="jdbc:sqlite:F:\CodeMgr\CodeMgr.db"></property>
        <property name="driverClassName" value="org.sqlite.JDBC" />
    </bean>
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="packagesToScan" value="com.demo.entity" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">com.demo.dialect.SQLiteDialect</prop>
                <!-- <prop key="hibernate.show_sql">true</prop> -->
            </props>
        </property>
        <property name="annotatedClasses">
            <list>
                <value>com.demo.entity.CodeType</value>
            </list>
        </property>
    </bean>

    <bean id="transactionManager-hibernate" abstract="false"
        lazy-init="default" autowire="default"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <tx:annotation-driven />

</beans>
View Code

hibernate4 dao

hibernate3 or hibernate4+spring3.1+SQLite Annotation 
configuration
package com.demo.dao.impl2;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

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

@Repository
@Transactional("transactionManager-hibernate")
public class CodeTypeDaoImpl implements CodeTypeDao {


    public static void main(String[] args) {
        ApplicationContext appContext = new ClassPathXmlApplicationContext(
                "applicationContext.xml");
        CodeTypeDao codeTypeDao = appContext.getBean(CodeTypeDao.class);
        List<CodeType> list = codeTypeDao.getAllCodeTypes();

        System.out.println(list.size());
    }

    @Override
    public List<CodeType> getAllCodeTypes() {
        Session session =getCurrentSession();
        return session.createQuery("from CodeType").list();
        //return getHibernateTemplate().find("from CodeType");
    }
    
       @Autowired
        private SessionFactory sessionFactory;

        public Session getCurrentSession() {
            return sessionFactory.getCurrentSession();
        }
}
View Code

 

 

hibernate3 applicationContext.xml

hibernate3 or hibernate4+spring3.1+SQLite Annotation 
configuration
<?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:context="http://www.springframework.org/schema/context"
    
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-3.0.xsd ">


    <context:annotation-config />
        <context:component-scan base-package="com.demo" >
    </context:component-scan>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="org.sqlite.JDBC"></property>
        <property name="url"
            value="jdbc:sqlite:F:\CodeMgr\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 id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">-->
<!--      <property name="sessionFactory" ref="sessionFactory"></property>-->
<!--  </bean>-->
<!--    <bean class="com.demo.dao.impl.CodeTypeDaoImpl" name="codeTypeDao" >-->
<!--        <property name="sessionFactory" ref="sessionFactory"></property>-->
<!--    </bean>-->
</beans>
View Code

hibernate 3 dao

BaseDao

hibernate3 or hibernate4+spring3.1+SQLite Annotation 
configuration
package com.demo.dao.impl;

import javax.annotation.Resource;

import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class BaseDao extends HibernateDaoSupport {
     @Resource(name="sessionFactory")
        public void setSuperSessionFactory(SessionFactory sessionFactory){
            super.setSessionFactory(sessionFactory);
        }
}
View Code

CodeTypeDaoImpl

hibernate3 or hibernate4+spring3.1+SQLite Annotation 
configuration
package com.demo.dao.impl;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Repository;

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

@Repository
public class CodeTypeDaoImpl extends BaseDao implements CodeTypeDao {

    public List<CodeType> getCodeTypes() {
        return getHibernateTemplate().find("from CodeType");
    }

    public static void main(String[] args) {
        ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        CodeTypeDao codeTypeDao = appContext.getBean(CodeTypeDao.class);
        List<CodeType> list = codeTypeDao.getCodeTypes();

        System.out.println(list.size());
    }
}
View Code

hibernate3 or hibernate4+spring3.1+SQLite Annotation configuration

上一篇:【Oracle】悲观锁和乐观锁


下一篇:A - Specialized Four-Digit Numbers