code: @SuppressWarnings("unchecked")
  	@Override
  	public int insert(final Object entity) {
  		@SuppressWarnings("rawtypes")
  		EntityHandler handler = this.getEntityHandler();
  		if (!handler.getEntityType().isInstance(entity)) {
  			throw new IllegalArgumentException("Entity type not supported");
  		}
  
  		try {
  			Class<?> type = entity.getClass();
  			TableMetadata metadata = handler.getMetadata(this.transactionManager, type);
  			SqlContext context = handler.createInsertContext(this, metadata, type);
  			context.setSqlKind(SqlKind.INSERT);
  
  			// IDアノテーションが付与されたカラム情報を取得する
  			MappingColumn[] idColumns = MappingUtils.getIdMappingColumns(type);
  
  			setGeneratedKeyColumns(context, idColumns, metadata);
  
  			handler.setInsertParams(context, entity);
  			int count = handler.doInsert(this, context, entity);
  
  			if (idColumns != null && idColumns.length > 0) {
  				BigDecimal[] ids = context.getGeneratedKeyValues();
  				int idx = 0;
  				for (MappingColumn col : idColumns) {
  					BigDecimal id = ids[idx++];
  					setEntityIdValue(entity, id, col);
  				}
  			}
  
  			return count;
  		} catch (SQLException e) {
  			throw new EntitySqlRuntimeException(SqlKind.INSERT, e);
  		}
  	}
docs: {@inheritDoc}
  
  @see jp.co.future.uroborosql.SqlAgent#insert(Object)