⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sequencegenerator.java

📁 介绍了hibernate的入门有一些基本常用的事例
💻 JAVA
字号:
//$Id: SequenceGenerator.java,v 1.12 2005/02/12 07:19:22 steveebersole Exp $package org.hibernate.id;import java.io.Serializable;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Properties;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.hibernate.HibernateException;import org.hibernate.MappingException;import org.hibernate.exception.JDBCExceptionHelper;import org.hibernate.dialect.Dialect;import org.hibernate.engine.SessionImplementor;import org.hibernate.mapping.Table;import org.hibernate.type.Type;import org.hibernate.util.PropertiesHelper;/** * <b>sequence</b><br> * <br> * Generates <tt>long</tt> values using an oracle-style sequence. A higher * performance algorithm is <tt>SequenceHiLoGenerator</tt>.<br> * <br> * Mapping parameters supported: sequence, parameters. * * @see SequenceHiLoGenerator * @see TableHiLoGenerator * @author Gavin King */public class SequenceGenerator implements PersistentIdentifierGenerator, Configurable {	/**	 * The sequence parameter	 */	public static final String SEQUENCE = "sequence";	/**	 * The parameters parameter, appended to the create sequence DDL.	 * For example (Oracle): <tt>INCREMENT BY 1 START WITH 1 MAXVALUE 100 NOCACHE</tt>.	 */	public static final String PARAMETERS = "parameters";	private String sequenceName;	private String parameters;	private Type identifierType;	private String sql;	private static final Log log = LogFactory.getLog(SequenceGenerator.class);	public void configure(Type type, Properties params, Dialect dialect) throws MappingException {		this.sequenceName = PropertiesHelper.getString(SEQUENCE, params, "hibernate_sequence");		this.parameters = params.getProperty(PARAMETERS);		String schemaName = params.getProperty(SCHEMA);        String catalogName = params.getProperty(CATALOG);        if (sequenceName.indexOf(dialect.getSchemaSeparator() ) < 0) {            sequenceName = Table.qualify(catalogName, schemaName, sequenceName, dialect.getSchemaSeparator() );        }        this.identifierType = type;		sql = dialect.getSequenceNextValString(sequenceName);	}	public Serializable generate(SessionImplementor session, Object obj) 	throws HibernateException {				try {			PreparedStatement st = session.getBatcher().prepareSelectStatement(sql);			try {				ResultSet rs = st.executeQuery();				final Serializable result;				try {					rs.next();					result = IdentifierGeneratorFactory.get(						rs, identifierType					);				}				finally {					rs.close();				}				if ( log.isDebugEnabled() )					log.debug("Sequence identifier generated: " + result);				return result;			}			finally {				session.getBatcher().closeStatement(st);			}					}		catch (SQLException sqle) {			throw JDBCExceptionHelper.convert(			        session.getFactory().getSQLExceptionConverter(),			        sqle,			        "could not get next sequence value",			        sql			);		}	}	public String[] sqlCreateStrings(Dialect dialect) throws HibernateException {		String[] ddl = dialect.getCreateSequenceStrings(sequenceName);		if ( parameters!=null ) ddl[ddl.length-1] += ' ' + parameters;		return ddl;	}	public String[] sqlDropStrings(Dialect dialect) throws HibernateException {		return dialect.getDropSequenceStrings(sequenceName);	}	public Object generatorKey() {		return sequenceName;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -