2012-03-19 83 views
4

我开始使用JPA,而且我总是对实体和它们的用法感到困惑,我读了很多,但我仍然不太明白。 我阅读了Oracle的文档,但并没有真正解释它在事务中的角色。什么是JPA实体?

什么是JPA enities?他们是否真的为每一行保存数据,我的意思是说,他们是否存储了保存行数据的实例?或者他们只是映射数据库的表,然后插入和删除它们?

例如,如果我用这个:

entity.setUserName("michel"); 

然后坚持它,然后更改用户名,并重新persisitig它(即合并IT)

这是否改变以前输入的用户名?或者它在数据库中创建一个新的行?

回答

13

当您从代码透视图或表格中的行(基本上)思考数据库视角时,实体与类的实例大致相同。

所以,它本质上是一个持久/持久的类实例。更改其上的值就像更改任何其他类实例上的值一样。不同的是,您可以坚持这些更改,并且通常,类实例(实体)的当前状态将根据数据库匹配中的主键,覆盖该实例(实体)在数据库中的行的值类实例(实体)中的“id”或类似字段。

当然,这种行为也有例外,但这通常是正确的。

0

这是一个模型。这是一个可以被持久化的域对象。不要过度思考。类似于Rails模型。请记住,模型(在这个范例中)是可变的!