关于java中包和文件名的问题

如果有这样四个接口如下:
com.jdon.itestA
IAA
IBB
com.jdon.itestB
ICC
IDD

假设每个接口都用同一种技术实现:
com.jdon.testA
AAImpl
BBImpl
com.jdon.testB
CCImpl
DDImpl

这样OK.

但是,如果现在对于同一接口或者同一包下的接口,会有不同的实现类,包的组织应该如何组织?
我觉得有三种,那种最好?
第一种:文件名分开,业务(testA、testB)不分开
com.jdon.testA
AAImplHibernate
AAImplEJB
BBImplHibernate
BBImplEJB
com.jdon.testB
CCImplHibernate
CCImplEJB
DDImplHibernate
DDImplEJB

第二种:文件名相同,业务下技术实现分开
com.jdon.testA
com.jdon.testA.hibernate
AAImpl
BBImpl
com.jdon.testA.ejb
AAImpl
BBImpl
com.jdon.testB
com.jdon.testB.hibernate
CCImpl
DDImpl
com.jdon.testB.ejb
CCImpl
DDImpl

第三种:技术上分开,然后再业务上分开
com.jdon.hibernate
com.jdon.hibernate.testA
AAImpl
BBImpl
com.jdon.hibernate.testB
CCImpl
DDImpl
com.jdon.ejb
com.jdon.ejb.testA
AAImpl
BBImpl
com.jdon.ejb.testB
CCImpl
DDImpl

到底哪种好?谢谢!

接口继承

没有人指导一下吗?看起来简单的问题,我觉得深入思考,并不简单吧?