在部署中保留一个实体
Persisting an entity on deployment
我目前正在开发一个用于创建和 运行 模拟的 Web 应用程序。对于这个应用程序,我希望用户能够加载一些预设并使用它们。为此,我希望在部署时将预设保存在数据库中,但我似乎找不到合适的方法来执行此操作。
对于该项目,我将 Wildfly 与 Hibernate 结合使用。我知道我可以制作一个 import.sql 来做我想做的事,但这对我的使用来说并不是最佳选择,因为预设实体有很多属性更容易设置为 .java 文件。
这是我的 Simulation.java class 的摘录:
@javax.persistence.Entity
public class Simulation
{
/**
* An automatically generated id
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private int id;
/**
* The simulation name, limited to 255 characters
*/
@NotBlank
@Length(max = 255)
private String name;
/**
* Date the simulation was created
*/
@Temporal(TemporalType.TIMESTAMP)
private Date date;
/**
* Result of the simulation
*/
@OneToOne(cascade = {CascadeType.ALL})
private SimulationResult result;
@Transient
@OneToMany(cascade=CascadeType.ALL)
private List<Consumer> consumers;
@Transient
@OneToMany(cascade=CascadeType.ALL)
private List<Producer> producers;
private int ticks;
private boolean preset;
[...]
如何创建一个实例并在部署时保留它?
您可以考虑使用 WildFly db-bootstrap 扩展 https://github.com/wildfly-extras/db-bootstrap/blob/master/README.md
您可以创建一个创业公司class:
@Singleton
@Startup
public class StartupBean {
@PostConstruct
private void startup() { ... }
}
您可以在启动方法中创建预设。
我目前正在开发一个用于创建和 运行 模拟的 Web 应用程序。对于这个应用程序,我希望用户能够加载一些预设并使用它们。为此,我希望在部署时将预设保存在数据库中,但我似乎找不到合适的方法来执行此操作。
对于该项目,我将 Wildfly 与 Hibernate 结合使用。我知道我可以制作一个 import.sql 来做我想做的事,但这对我的使用来说并不是最佳选择,因为预设实体有很多属性更容易设置为 .java 文件。
这是我的 Simulation.java class 的摘录:
@javax.persistence.Entity
public class Simulation
{
/**
* An automatically generated id
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private int id;
/**
* The simulation name, limited to 255 characters
*/
@NotBlank
@Length(max = 255)
private String name;
/**
* Date the simulation was created
*/
@Temporal(TemporalType.TIMESTAMP)
private Date date;
/**
* Result of the simulation
*/
@OneToOne(cascade = {CascadeType.ALL})
private SimulationResult result;
@Transient
@OneToMany(cascade=CascadeType.ALL)
private List<Consumer> consumers;
@Transient
@OneToMany(cascade=CascadeType.ALL)
private List<Producer> producers;
private int ticks;
private boolean preset;
[...]
如何创建一个实例并在部署时保留它?
您可以考虑使用 WildFly db-bootstrap 扩展 https://github.com/wildfly-extras/db-bootstrap/blob/master/README.md
您可以创建一个创业公司class:
@Singleton
@Startup
public class StartupBean {
@PostConstruct
private void startup() { ... }
}
您可以在启动方法中创建预设。