gpt4 book ai didi

java - 声明 createEntityManagerFactory 的最佳方式

转载 作者:行者123 更新时间:2023-11-29 04:27:13 24 4
gpt4 key购买 nike

我实际上是在使用 JPA 开发一个 springboot 项目。我正在寻找更好的实现方式,目前它可以工作,但我的印象是这不是最好的方式

    @RestController
public class inscription {

EntityManagerFactory objFactory = Persistence.createEntityManagerFactory("com.myapplication_jar_0.0.1-SNAPSHOTPU");

UserJpaController userCtrl = new UserJpaController(objFactory);
SerialsJpaController licenseCtrl = new SerialsJpaController(objFactory);


@CrossOrigin(origins = CURRENT_IP)
@RequestMapping(value = "/createaccount", method = RequestMethod.GET)
public CreatAccountResponseTemplate createAccount(
@RequestParam(value = "login") String login,
@RequestParam(value = "password") String password,
)
{
EntityManager manager = objFactory.createEntityManager();

CreatAccountResponseTemplate responseTemplate = new CreatAccountResponseTemplate();

...}

最佳答案

Spring JPA 有助于减少配置数据存储库所需的样板代码。

也许使用 EntityManagerFactory 作为 RestController 的成员可能是不必要的依赖。这是另一种选择:

  1. 创建您的域

实体

@Entity
public class DataCenter {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private String id;

private String name;

private String location;

.......

}
  1. 创建接口(interface)存储库以处理与您的实体相关的数据库操作。

存储库

public interface DataCenterRepository extends JpaRepository<DataCenter,String> {}
  1. Repository 自动连接到您的 Controller ,此示例适用于标准 Controller ,但它也适用于 RestController

Controller

@Controller
@RequestMapping("/datacenters")
public class DataCenterController {

private final DataCenterRepository dataCentersRepository;

@Autowired
public DataCenterController(DataCenterRepository dataCentersRepository){
this.dataCentersRepository=dataCentersRepository;
}

@RequestMapping(value = "/save", method=RequestMethod.POST)
public ModelAndView save(@RequestParam(value="name") String datacenterName,
@RequestParam(value="age") String datacenterLocation, ModelAndView modelAndView ) {
DataCenter dataCenter = new DataCenter(datacenterName, datacenterLocation);
dataCentersRepository.save(dataCenter);
modelAndView.addObject("datacenter", dataCenter);
modelAndView.setViewName("success");
return modelAndView;
}

@RequestMapping(value="/all", method=RequestMethod.GET)
public String getAll(Model model){
model.addAttribute("datacenters", dataCentersRepository.findAll());
return "datacenters";
}

如果你被迫@Autowired你的EntityManagerFactory那么就

@Autowired
private EntityManagerFactory entityManagerFactory;

关于java - 声明 createEntityManagerFactory 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45655972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com