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

📄 incrementgenerator.java

📁 介绍了hibernate的入门有一些基本常用的事例
💻 JAVA
字号:
package org.hibernate.id;import java.io.Serializable;import java.sql.Connection;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;/** * <b>increment</b><br> * <br> * An <tt>IdentifierGenerator</tt> that returns a <tt>long</tt>, constructed by * counting from the maximum primary key value at startup. Not safe for use in a * cluster!<br> * <br> * Mapping parameters supported, but not usually needed: table, column. * * @author Gavin King */public class IncrementGenerator implements IdentifierGenerator, Configurable {	private static final Log log = LogFactory.getLog(IncrementGenerator.class);	private long next;	private String sql;	private Class returnClass;	public synchronized Serializable generate(SessionImplementor session, Object object) 	throws HibernateException {		if (sql!=null) {			getNext( session );		}		return IdentifierGeneratorFactory.createNumber(next++, returnClass);	}	public void configure(Type type, Properties params, Dialect d)	throws MappingException {		String table = params.getProperty("table");		if (table==null) table = params.getProperty(PersistentIdentifierGenerator.TABLE);		String column = params.getProperty("column");		if (column==null) column = params.getProperty(PersistentIdentifierGenerator.PK);		String schema = params.getProperty(PersistentIdentifierGenerator.SCHEMA);        String catalog = params.getProperty(PersistentIdentifierGenerator.CATALOG);		returnClass = type.getReturnedClass();        sql = "select max(" + column + ") from " + Table.qualify(catalog, schema, table, d.getSchemaSeparator() );	}	private void getNext( SessionImplementor session ) {		Connection conn = session.connection();		log.debug("fetching initial value: " + sql);				try {			PreparedStatement st = conn.prepareStatement(sql);			ResultSet rs = null;			try {				rs = st.executeQuery();				if ( rs.next() ) {					next = rs.getLong(1) + 1;					if ( rs.wasNull() ) next = 1;				}				else {					next = 1;				}				sql=null;				log.debug("first free id: " + next);			}			finally {				if (rs!=null) rs.close();				st.close();			}					}		catch (SQLException sqle) {			throw JDBCExceptionHelper.convert(			        session.getFactory().getSQLExceptionConverter(),			        sqle,			        "could not fetch initial value",			        sql			);		}	}}

⌨️ 快捷键说明

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