美好的一天,
我目前正处于我的第一个JPA项目中,并且在使用和理解实体管理器时遇到了一些困难。我创建了几个类,并通过注释将它们分配为实体。现在,我正在尝试创建一个将通过entityManager创建实体对象的类。例如,我有以下课程:
@Entity
@Table(name = "product")
public class Product implements DefaultProduct {
@Id
@Column(name = "product_name", nullable = false)
private String productName;
@Column(name = "product_price", nullable = false)
private double productPrice;
@Column(name = "product_quantity", nullable = false)
private int productQuantity;
@ManyToOne
@JoinColumn(name = "Product_Account", nullable = false)
private Account parentAccount;
public Product(String productName, double productPrice,
int productQuantity, Account parentAccount)
throws IllegalArgumentException {
if (productName == null || productPrice == 0 || productQuantity == 0) {
throw new IllegalArgumentException(
"Product name/price or quantity have not been specified.");
}
this.productName = productName;
this.productPrice = productPrice;
this.productQuantity = productQuantity;
this.parentAccount = parentAccount;
}
public String getProductName() {
return productName;
}
public double getPrice() {
return productPrice * productQuantity;
}
public int getQuantity() {
return productQuantity;
}
public Account getAccount() {
return parentAccount;
}
}
现在,我正在尝试创建这个类:
public class CreateProduct {
private static final String PERSISTENCE_UNIT_NAME = "Product";
EntityManagerFactory factory = Persistence
.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
public void createProduct(Product product) {
EntityManager manager = factory.createEntityManager();
manager.getTransaction().begin();
//code to be written here
manager.getTransaction().commit();
}
}
请你给我一个代码示例,我必须在createProduct方法中的begin()和commit()行之间写下来;另外,如果你能解释一下entitymanager是如何工作的,我将不胜感激。我已经阅读了几篇关于此的文档,但我仍需要一些澄清。
提前致谢
答案 0 :(得分:0)
Account account - new Account();
Product product = new Product("name", 10, 11, account);
manager.persist(product);
根据您在字段或getter上放置@Column @OneToOne等注释时,entityManager将使用这种方式从类中获取字段值。它使用反射来读取注释,并使用它知道表应该是什么样子。通过了解表结构,它只是在后台创建一个查询,然后将其发送到数据库。在创建实体管理器工厂时,基本上会对类进行分析,并且此操作通常非常耗时(取决于数据库结构)。要大胆地了解它是如何工作的,请阅读更多关于反思的内容。如果你得到反思,你会得到它的简单。