如果我有两个豆子,一个用于团队,另一个用于玩家。没有球员,球队不能存在,球员必须属于球队。如果我的两个bean基本上被声明它们是如何在下面(假设存在getter和setter)。如果我遵循MVC设计模式,那么设计控制器或托管bean的最佳实践是将这些对象持久保存到数据库中吗?网站将在提交时询问团队的名称和球员在同一时间的名字。我需要两个托管bean,一个用于播放器,一个用于团队?或者我只需要一个团队的托管bean,因为团队拥有玩家?
@Entity
@Table(name = 'teams')
public class Team {
@Id
@GeneratedValue
private Integer id;
private String name;
@OneToMany(mappedBy='team', cascade=CascadeType.ALL)
private List<Player> players = new ArrayList<Player>();
}
@Entity
@Table(name = 'players')
public class Player {
@Id
@GeneratedValue
private Integer id;
private String lastname;
@ManyToOne
@JoinColumn(name = 'team_id')
private Team team;
}
答案 0 :(得分:0)
我会按功能将其分组到控制器中,而不是通过实体bean。所以,一个控制器就足够了。
选择名称一直是编程中最棘手的部分之一:)你可以选择TeamController
或PlayerController
,看看哪种更适合。
答案 1 :(得分:0)
对我来说,像这样创建一个新的托管bean
public class TeamBean {
public String nameTeam;
public list<String> namePlayer;
// getter & setter
在你的jsp中
<input .. name="nameTeam"> //team name
// the important is the attribute name must be the same as your managedbean
<input .. name="namePlayer"> //player 1 name
<input .. name="namePlayer"> //player 2 name
...
你的控制器就像这样
@Controller
public class YourController {
....
@RequestMapping(...)
public String save-team(@ModelAttribute TeamBean teamBean , HttpServletRequest request) {
// now you have the object teamBean you can persist it in your db
// for example
Team team = yourTeamDAO.save(new Team(teamBean.nameTeam))
for(Player p : teamBean.namePlayer){
yourPlayerDAO.save(new Player(p,team))
}
//just declare in your entities the constructors that i have used `new Player(...)` , `new Team(..)`
}