Tôi không sử dụng Spring nên tôi đang tạo một cá thể của EntityManager trong một lớp.Hibernate EntityManager, nó được cho là được sử dụng như một singleton?
Tôi đã sử dụng kỹ thuật đảo ngược Hibernate-Eclipse để tự động tạo các lớp. Tất cả các lớp này đều có một thể hiện của EntityManager.
Tôi không chắc chắn cách Hibernate làm việc với EntityManager vì vậy tôi tự hỏi liệu có nhiều trường hợp của lớp này (EntityManager) được tạo, ví dụ, sẽ có vấn đề với giao dịch?
Tôi có nên tạo một lớp riêng biệt phân phối một thể hiện tĩnh của một EntityManager cho tất cả các lớp khác của tôi không? hay nó không quan trọng?
EDIT: Tôi thấy có một cái gì đó được gọi là @PersistenceContext, dường như không tải persistence.xml của tôi là một bean trong biến thể hiện, tính năng này có yêu cầu mùa xuân không? (Tôi nhận được null pointer ngoại lệ, bởi vì nó không bao giờ được tiêm)
snip mã từ nơi tôi cố gắng sử dụng @persistencecontext
@PersistenceContext(unitName = "manager1")
private EntityManager entityManager;
persistence.xml tôi
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="manager1" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="mypassword"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/ptbrowserdb"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
</properties>
</persistence-unit>
</persistence>
Bạn có thể xóa công cụ sửa đổi truy cập riêng tư (trên 'EntityManager') và kiểm tra không? – Santosh