My quibble is not with "exists" which in general is a very good way to write a query, just queries like
select *
from foo
where foo.key in (select bar.key
from bar
where bar.key = :something)
Apparently the above is better than a join if "bar" is actually a complex view in some cases.