0

私はホームコントローラーを持っており、その中に2つの方法があります。

    @RequestMapping(value = "/mypage.te", method = RequestMethod.GET)
    public String mypage1(Locale locale, Model model){

        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        String name = auth.getName(); //get logged in username 
        model.addAttribute("username", name);       
        model.addAttribute("customGroup",grpDao.fetchCustomGroup());        
        model.addAttribute("serverTime", formattedDate);
        model.addAttribute("username", name);

        return "mypage";
}

grpDao.fetchCustomGroup()このメソッドでは、実際に、ネイティブクエリを実行してデータをフェッチして返すDaoクラスからメソッドを呼び出し、それをに保存しcustomGroupます。

これで、同じfetchcustomGroup()方法が別の方法で使用されます。

@RequestMapping(value = "/manageGrps.te", method = RequestMethod.GET)
public String man_grp_connections(@RequestParam("id") Integer groupId,@RequestParam("name") String groupName, Model model) {
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    String name = auth.getName();
    System.out.println("I am in the fetchCustomGroup controller");  
    int profileid=grpDao.getProfileId(name);        
    //model.addAttribute("customGroup",grpDao.fetchCustomGroup());
    model.addAttribute("memberList",grpDao.fetchGroupMembers(groupId,profileid));
    model.addAttribute("groupid",groupId);
    model.addAttribute("profileid",profileid);

    model.addAttribute("groupName",groupName);
    System.out.println("groupid="+groupId);
    System.out.println("groupName="+groupName);
    return "manageGrps";
}

したがって、両方のメソッドでを呼び出す代わりに、fetchCustomGroup()1つのメソッドのみを呼び出して、ホームコントローラーの両方のメソッドで結果を使用したいと思います。

では、別のメソッドでcustomGroupを使用して、fetchCustomGroup()

4

1 に答える 1

0

クエリを2回実行しないようにすることが必要だと思います。これはさまざまな方法で実行できます。最も簡単な方法は、コントローラーの変数に応答を割り当ててから、daoの代わりにgetterを使用することです。コントローラはデフォルトでシングルトンです。何かのようなもの :

private Foo customGroup;

private synchronized Foo getCustomGroup() {
    if(customGroup == null) {
        customGroup = grpDao.fetchCustomGroup();
    } 
    return customGroup;
}

そして、getCustomGroup()の代わりに使用しますgrpDao.fetchCustomGroup()

永続性に何を使用しているかはわかりませんが、クエリを2回実行しないようにするには、キャッシュを使用することもお勧めします。

于 2013-02-06T10:52:35.330 に答える