I am focusing on a legacy project. The database is poorly designed. I wish to alter the DB layer now. The very first think undergo my thoughts is hibernate, however i hibernate require a primary key on my small table. Actually a number of my table doesn't have primary key. And So I did a search and that i find iBatis, it's sounds excellent by using it. But I'm not sure whether iBatis enforce a principal key on my small table?

Thanks.

No. IBatis doesn't pressure you to possess a primary key you are cooking. Its main work and strength would be to map data from resultsets to java objects. The SQL claims to retrieve the information in the database are written manually (you), so you've very little constraints or restrictions here.