我正在使用Spring Boot和Spring Data JPA。我创建了一个实体作为具有原型范围的Spring bean。如何让每个对象的bean在数据库中持久化?
@Entity
@Table(name="sample")
@Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class Sample {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
如果我不将该实体用作Spring bean,那么我将使用以下代码来获取该对象:
Sample sample = new Sample();
如何在Spring Boot中使用Prototype范围bean来使用该对象?
答案 0 :(得分:0)
您不想为实体定义范围。实体不像春豆。
Spring数据使用三个重要组件来持久保存到数据库中。
1)实体类 - 每个表都必须定义自己的java对象模型,称为实体类。
@Entity
@Table(name="sample")
public class Sample {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(name="name") //Column name from the table
private String name;
2)Repo接口 - 在其中您可以定义自己的SQL实现,默认情况下它将具有save方法。
public interface SampleRepo extends CrudRepository<Sample,Long>{
List<Sample> findByName(String name);
}
3)客户端程序:
private SampleRepo s;
//instantiate s using autowired setter/constructor
....
//Select example
List<Sample> sampleList=s.findByName("example");
//Insert example
//Id is auto. So no need to setup explicit value for it.
Sample entity=new Sample();
s.setName("Example");
s.save(entity);