摘要:
Hibernate的基本特征是完成面向对象的程序设计语言到关系数据库的映射,在Hibernate中使用持久化对象PO(Persistent Object)完成持久化操作,对PO的操作必须在Session管理下才能同步到数据库, 但是这里的Session并非指HttpSession,可以理解为基于JDBC的Connnection,Session是 Hibernate运作的中心, 对象的生命周期、事务的管理、数据库的存取都与Session息息相关,首先,我们需要知道, SessionFactory负责创建Session,SessionFactory是线程安全的,多个并发线程可以同时访问一个 Ses 阅读全文
摘要:
摘 要:介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安全的原因,给出了保证Servlet线程安全的三种解决方案,并说明三种方案在实际开发中的取舍。 关键字:Servlet 线程安全 同步 Java内存模型 实例变量 Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的安全性问题。然而,很多人编写Servlet/JSP程序时并没有注意到多线程安全性的问题,这往往造成编写的程序在少量用户访问时没有任何问题,而在并发 阅读全文
摘要:
第8条:覆盖equals时请遵守通用约定1.什么时候应该覆盖Object.equals呢? 如果类具有自己特有的“逻辑相等”概念(不同于对象等同的概念),而且超类还没有覆盖equals以实现期望的行为,这时就需要覆盖equals方法。(“值类”,仅仅表示一个值的类,例如:Integer或者Date) ==与equals的区别:==比较的是内存中的地址,比较的是对象的句柄,对象等同;而equals()比较的是地址内的内容,比较的是对象,逻辑相同. 有一种值类不需要覆盖equals方法,即实例受控确保“每个值之多值存在一个对象”,例如枚举类型,这样的类,逻辑相同与对象等同是一回事。2.覆盖equa 阅读全文
摘要:
第45条:将局部变量的作用域最小化1.在第一次使用变量时的地方声明;2.几乎每个局部变量的声明都应该包含一个初始表达式;变量最好在try-catch里被初始化,不然一个变量被一个方法初始化时可能会抛出受检的异常(checked exception)。如果必须在try之前初始化,那么它必须是“无意义地初始化”,如:string s = null;3.如果在终止循环之后不需要循环变量的内容,for循环优于while循环。(for循环比while循环还有个优势:更简洁,增强可读性)第46条:for-each循环优于传统的for循环1.对于多个集合进行嵌套迭代时,for-each循环优势更明显,使用传 阅读全文