在applicationContext.xml中声明持久的JPA实体?

时间:2014-09-17 15:12:14

标签: spring jpa spring-data applicationcontext spring-orm

所以,这就是我想要做的。有些人喜欢这样,我已经能够在openerp中找到。

我想,我可以简单地声明一个bean,它也是一个JPA持久化实体,例如:

Example.java:

package my.project;

@Configurable
@Entity
public class Example {
    String a;
    String b;
...
}

当然,这个类已经包含了JPA持久性注入,因此它可以作为普通的JPA支持的持久类从java代码处理。我的目标是从Spring applicationContext.xml

声明它的一些实例

的applicationContext.xml:

<bean class="my.project.Example">
    <property name="a" value="test_a"/>
    <property name="b" value="test_b"/>
</bean>

我认为它真的很有趣:

  1. 必须从Spring初始化调用新创建的实例的persist()方法,但前提是它已经存在于数据库中。
  2. 如果存在,则应从持久性JPA存储加载实例。
  3. 有可能吗?是否有任务的示例代码? : - )

2 个答案:

答案 0 :(得分:1)

您是否考虑过使用工厂方法?您可以在里面插入实体管理器并调用查找/保存内部。然后,工厂方法将从数据库返回您的bean实例,或者创建一个新实例并保留它。 对我来说,这将是更好的解决方案,也很容易在测试中模拟。

答案 1 :(得分:1)

不,没有现成的通用解决方案。您可以做的只是在部署时从Bean执行一些代码,如here所述。如果要使其更通用,以便从XML文件中读取属性值,则可以自由地解析Bean中的XML数据并执行通用逻辑。