并发不适合胆小者
我们都知道并发编程很难正确实现。 这就是为什么在执行线程任务之后要进行大量的设计和代码审查会议。
您永远不会将并发问题分配给经验不足的开发人员。 仔细分析问题空间,提出设计,并记录和审查解决方案。
这就是通常处理线程相关任务的方式。 您自然会选择更高级别的抽象,因为您不想陷入低级细节中。 这就是为什么java.util.concurrent通常比手工生产者/消费者Java 1.2风格的线程安全结构更好(除非您构建高频交易系统)。
数据库编程有什么不同吗?
在数据库系统中,数据分布在各种结构(SQL表或NoSQL集合)中,并且多个用户可以选择/插入/更新/删除他们选择的任何内容。 从并发的角度来看,这是一个非常具有挑战性的任务,而不仅仅是数据库系统开发人员的问题。 这也是我们的问题。
典型的RDBMS数据层要求您掌握各种技术,而您的解决方案仅与团队最薄弱的地方一样强大。
成功秘诀
当涉及到数据库编程时,您永远都不应从未受过训练。 不断学习是您最好的武器,没有其他方法。
为此,我想出了自己的数据知识堆栈:
在前进到上一层之前,您应该始终掌握下一层。
因此,这些是驯服数据层的黄金法则:
- 该数据库手册不仅适用于数据库管理员。如果您正在执行任何与数据库相关的任务,那么阅读当前的数据库手册不是可选的。 您应该熟悉SQL标准和数据库特定的特征。 摆脱SQL-92思维定式 。 不要让可移植性的恐惧使您拒绝高效的数据库特定功能。 最终,使用缓慢的数据库层比将已经在运行的系统移植到新的数据库解决方案上更为常见。
- 完整阅读“ 企业应用程序架构的模式 ”,我将为您提供一个不错的投资技巧。 您距离了解任何可用的ORM工具的核心概念还差50美元。 马丁·福勒 ( Martin Fowler )的书对于任何企业开发人员都是必不可少的。 在线模式目录是一个很好的预告片。
- 阅读您的ORM文档有些人认为他们的ORM工具是万恶之源。 除非您花时间阅读所有可用的文档,否则,将很难驯服ORM数据层。 关系不匹配的对象一直是一个非常复杂的问题,但是它简化了复杂对象树结构的CREATE / UPDATE / DELETE操作。 ORM的乐观锁定功能是解决“丢失的更新”问题的好方法 。
- 选择和混合 JPA / Hibernate不能替代SQL。 您应该充分利用JPA和SQL,并将它们组合成一个成功的解决方案。 由于SQL在任何非平凡的应用程序中都是不可避免的,因此明智的做法是花一些时间(甚至是许可证)来使用功能强大的查询框架 。 如果您担心数据库的可移植性使您无法使用专有的数据库查询功能,那么JPA / JOOQ混合泳是成功的秘诀。
休眠大师班
我已经使用Hibernate已有将近十年了,我承认这并不是一件容易的事。 每天都会出现与StackOverflow Hibernate相关的问题。
这就是为什么我决定提出自己的Hibernate资料(我将在此博客和GitHub帐户上共享)的原因,因为如果您愿意花费时间来学习它,那么您就不必为自己的努力而付费。 对于那些需要密集且个性化的Hibernate Master培训的人,请随时与我联系。 我们将找到一种方法来培训您。
翻译自: https://www.javacodegeeks.com/2014/06/the-data-knowledge-stack.html