|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。
作为JavaEE5标准一部分的JPA,已有浩瀚的完成,好比:Hiberante,TopLink,EclipseLink和OpenJPA等很多ORM框架。JPA不单单使用于EJB3中,你也能够使用EJB3以外的使用,好比Spring中。乃至GavinKingHiberante的作者在HiberanteinAction的第二版书中也保举利用JPA。很分明,JPA将被普遍的使用。
一旦你熟习annotation,并实验过Helloworld之类的程序后,你会感到,恩JPA的确不错。然后,当你在你的项目中入手下手使用JPA时,你会发明实在其实不那末复杂,你必要思索怎样处置事件,惰性加载,移除对象实例,承继等等。这些成绩会在本系列中给你谜底。
起首进进第一的计划形式DAO。
我们必要DAO吗?
在二年前,我们已会商了这个成绩了,会商的了局是:是不是利用DAO依附于你的使用,相似于GOF的计划形式,假如是很复杂的使用程序,使用计划形式,只能增添你的庞大度。 而关于庞大使用程序,正由于其庞大,使用计划形式能够减低庞大度,进步可保护性。
使用了DAO我们能够失掉以下优点:
1.制止在任何存取数据的代码中引进EntityManager,削减了依附。
2.对某些实体Bean操纵增添限定。好比你不想对LogEntry供应删除操纵,使用DAO,你仅仅做的是不要在LogEntryDAO中不要增加remove的办法。
3.实际上,使用DAO层,你一个自在切换其他的耐久机制好比纯JDBC大概Ibatis.而实践上,JPA已是一个笼统层,这类切 换是没成心义的。
4.你能够在一个实体中会合一切的查询制止这些查询在其他代码中呈现。你可使用namedqueries 在实体类中查询,可是您仍旧必要准确的参数被设置。对应这类查询,你能够在DAO中设置参数,然后转换成准确的前往范例,好比:
public List<ChangePlan> findExecutingChangePlans() {
Query query = entityManager.createQuery(
"SELECT plan FROM ChangePlan plan where plan.state = EXECUTING");
return (List<ChangePlan>) query.getResultList();
}
然后,但你决意利用DAO时,怎样准确公道的利用它呢?在Spring的JpaTemplate的JavaDoc中倡议,不要利用相似特别的类,相似JpaDaoSupport。而是你应当本人经由过程@PersistenceContext正文猎取EntityManger来保护你的DAO。这类体例能够在EJB3的容器中事情,而且假如你在Spring的context到场PersistenceAnnotationBeanpostProcessorBean的话,在Spring2.0里也是没有成绩的。
范例平安且泛化的DAOpattern
由于每个DAO都包括一些不异的逻辑,以是我们应当抽取这些逻辑放进到父类中。
<p>
没有那个大公司会傻了吧唧用.net开发大型项目,开发了,那等于自己一半的生命线被微软握着呢。而.net不行,限制在window系统,又是捆绑,鄙视微软之! |
|