每个开发人员必须知道的设计模式是什么?
我对使用Spring和Hibernate的Java Web开发人员的上下文感兴趣.我经常听说,设计模式方面的良好知识对于使用这些框架至关重要.任何人都可以列出具体细节吗?
例如,我知道理解抽象工厂和工厂模式,单例模式等是绝对必要的.我正在寻找一份全面的清单.
在Hibernate在线文档中,在第7.2.3节"一对多"中,提到了:
外键上的单向一对多关联是一种不常见的情况,不建议这样做.您应该使用连接表进行此类关联.
我想知道为什么?我唯一想到的是,它可以在级联删除期间产生问题.例如,Person指的是外键上一对多关系的地址,该地址将拒绝在该人之前删除.
任何人都可以解释推荐背后的理性吗?
以下是参考文件内容的链接:7.2.3.一到多
我在这里复制粘贴了实际内容:
外键上的单向一对多关联是一种不寻常的情况,不建议这样做.
Run Code Online (Sandbox Code Playgroud)<class name="Person"> <id name="id" column="personId"> <generator class="native"/> </id> <set name="addresses"> <key column="personId" not-null="true"/> <one-to-many class="Address"/> </set> </class> <class name="Address"> <id name="id" column="addressId"> <generator class="native"/> </id> </class>
Run Code Online (Sandbox Code Playgroud)create table Person (personId bigint not null primary key) create table Address (addressId bigint not null primary key, personId bigint not null)您应该使用连接表进行此类关联.
我知道对接口进行编程有助于松散耦合.但是,是否有一个解释何时最有效的指南?
例如,我有一个简单的Web应用程序,它收集员工的数据,他们的培训计划,费用和计算他们一年的费用等.这是一个相当简单的应用程序,我当然可以使用一个界面,但想知道是否会有任何使用.我将使用它为了使用它.
始终可以认为,随着应用程序的复杂性增加而我传递对象,传递类型(接口)比实现更有意义.那么,我应该等待应用程序变得复杂或立即使用它吗?我想知道最好的做法可能会变成"这家伙过度做事".
任何人都可以指出我使用JDBC编写的DAO,它涵盖了DAO应该处理的所有异常.
我在java.sun.com看了一些样本,他们的蓝图,但是有很多理论和更少的代码.
浏览Spring DAO源代码将具有启发性,但这对我来说太复杂了.
我在DB2中创建了一个数据库,并在表中创建了关系.我想基于DB2中的数据库设计创建一个ER图.MS SQL有一个从DB模式创建ER图的工具,但DB2似乎没有,至少据我所知.
任何人都知道DB2本身的任何开源工具/工具吗?
对.NET应用程序中的每个SQL调用使用存储过程是最佳做法吗?
是否出于性能原因鼓励并减少SQL注入攻击的表面区域(在Web应用程序中)?
我是.NET的新手,我想参与.NET社区来发展我的技能(自私,我知道),贡献一些东西(不那么自私)我认为成为一个社区的一部分真的很好.
我可以开一个博客,但考虑到我是初学者,我不可能发布任何有价值的东西.开源项目怎么样?有办法参加吗?我检查了codeplex,在sourceforge中没有像"Help Wanted"这样的东西,所以我不知道从哪里开始.我认为一些开源项目也可以接受初学者.
有任何想法吗?
我有一个带注释的控制器和Spring MVC的奇怪问题.我试图使用Annotated控制器为Spring提供的示例MVC应用程序及其文档.我用了2.5版.
当我在类型级别指定@RequestMapping时,我得到"HTTP错误:500没有适用于处理程序的适配器[控制器类名]:您的处理程序是否实现了像Controller这样的支持接口?
如果我将它包含在方法级别中,它可以解决问题.向上下文文件添加或删除默认句柄适配器没有区别:
最后,我使用了控制器级别的@RequestMapping,以及方法级别的一个,并且它有效.任何人都知道可能是什么问题?
以下是示例代码:
这不起作用:
@Controller
@RequestMapping("/*")
public class InventoryController {
protected final Log logger = LogFactory.getLog(getClass());
@Autowired
private ProductManager productManager;
public ModelAndView inventoryHandler() {
String now = (new java.util.Date()).toString();
logger.info("returning hello view with " + now);
Map<String, Object> myModel = new HashMap<String, Object>();
myModel.put("now", now);
myModel.put("products", this.productManager.getProducts());
return new ModelAndView("hello", "model", myModel);
}
}
Run Code Online (Sandbox Code Playgroud)
这有效:
@Controller
public class InventoryController {
protected final Log logger = LogFactory.getLog(getClass());
@Autowired
private ProductManager productManager;
@RequestMapping("/hello.htm")
public ModelAndView inventoryHandler() {
String now …Run Code Online (Sandbox Code Playgroud) 我注意到一些开发人员学习新技能并从一个平台转移到另一个平台?他们是如何做到的呢?他们如何证明在他们得到这份工作的平台上缺乏经验?
它是否基于与以往经验的相关性?他们是否获得了目标平台的认证,并在接受减薪的初级阶段工作?如果你正在签订合同/咨询,这会更简单吗?或者仅仅是正确投影简历的问题?
我有一个场景,客户要求在struts 1上开发一个新项目.看起来他们有很多应用程序在Struts 1上运行,内部IT团队对此很满意.
对于数据访问,我们被要求编写JDBC,没有ORM,甚至不是Spring DAO.他们开发了一个框架,我们被要求使用它.
我想知道这里是否有人遇到类似情况,并设法说服客户使用更新的框架.