A "Component" in NHibernate is a way of modeling an object that has bunch of properties, but it is not a separate entity, because it doesn't have an ID.

What if we have a list of those components who belong to an object, and they are not entities, because they done' live on their own, and they don't have IDs.
Let see the following example

public class Product
{
    public string Name {get; set;}
    public decimal Price {get; set; }
    public List ProductPriceHistory {get; set;}
}

public class ProductPriceDated 
{
    public DateTime StartDate {get; set;}
    public DateTime EndDate {get; set;}
    public decimal Price {get; set; }
}


The ProductPriceDated is an example of a class that doesn't exist on its own, and it is always belong to a product. so, when I modeled , I don't want to create it as an "Entity", which has an ID ( I am talking about the class diagram and not database diagram, because on database, it is better to have a primary key).
To map it without making ProductPriceDated as an entity, we can do the following
public class ProductMapping : ClassMap
{
    public ProductMapping() : base()
    {
        Id(x => x.Id, "ProductId").GeneratedBy.Native();
        Map(p => p.Name);
        Map(p => p.Price);
        HasMany(x => x.ProductPriceHistory)
            .KeyColumn("ProductId").Table("ProductPriceHistory")
            .Component(y =>
                            {
                                y.Map(z => z.StartDate);
                                y.Map(z => z.ListPrice);
                                y.Map(z => z.EndDate);
                             }
            );
    }
}