entity
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; } }
SQLiteDialect.java
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; } }
hibernate4 applicationContext.xml
<?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>
hibernate4 dao
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(); } }
hibernate3 applicationContext.xml
<?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>
hibernate 3 dao
BaseDao
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); } }
CodeTypeDaoImpl
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()); } }
hibernate3 or hibernate4+spring3.1+SQLite Annotation configuration