Como garantir ao compilador que o tipo <T> passado implementa determinada interface?

Bem galera vou direto ao ponto.

Em C# utilizando o NHibernate eu tenho uma classe de persistência complemente genérica:

public class Dao<T> where T : IModel
{...}

Na assinatura da classe essa minha interface IModel garante que toda classe tenha o atributo Id.

Fazendo esse where T : IModel. Qualquer classe que estenda de Dao terá que passar uma classe que implemente IModel, com isso consigo evitar varios cast para IModel em meu Dao. E também se torna impossível passar para a classe Dao uma classe que não tenha os acessos (get e set) do Id. Evitando programadores distraídos.

Andei procurando em java e não achei nada que fizesse algo parecido. Gostaria de saber se há como fazer isso em java e como?

Att. Fernando Leal.

public class Dao&lt;T extends IModel&gt; { ... }

http://docs.oracle.com/javase/tutorial/java/generics/bounded.html

Vini vlw cara.

Era isso mesmo que eu quiria, muito bom, java é 10^^

agora bora fazer Dao generico.