我已经在程序中hibernate了带注释的类。由于我正在运行Spring项目,因此已将它们包含在servlet.xml文件中(com.student.dto是实际的包名称),并在Contacts实体上添加了@Component。是否有一种方法可以自动添加@Component在所有hibernate类上。每次创建模型时,我最终都会这样做,并且觉得应该做得更好。
<context:component-scan base-package="com.student.dto" /> @Component @Entity @Table(name = "Contacts", catalog = "javadb") public class ContactsDTO implements java.io.Serializable { private int idContacts; private StudentDTO StudentDTO; private String addr1; private String addr2; private String city; private String state; private String pinCode; private String country; private String phone; private String mobile; private String email; private String contactscol; public ContactsDTO() { } public ContactsDTO(int idContacts) { this.idContacts = idContacts; } public ContactsDTO(int idContacts, StudentDTO StudentDTO, String addr1, String addr2, String city, String state, String pinCode, String country, String phone, String mobile, String email, String contactscol) { this.idContacts = idContacts; this.StudentDTO = StudentDTO; this.addr1 = addr1; this.addr2 = addr2; this.city = city; this.state = state; this.pinCode = pinCode; this.country = country; this.phone = phone; this.mobile = mobile; this.email = email; this.contactscol = contactscol; } getters & setters
你做错了一切。默认情况下,Spring Bean是单例的,并且您的实体不是线程安全的,也不是。
实体应该是绑定到持久上下文的局部变量。不能在多线程环境中访问它们。
并发控制由数据库处理,您的应用程序逻辑应主要关注通过应用程序级可重复读取防止更新丢失。
您的DAO和服务应该是Spring单例组件。您的实体和请求绑定的DTO决不能为单例。这些对象是短暂的,范围仅限于生成它们的请求。
查看Spring Data JPA文档以获取可靠的数据访问层设计。