Hibernate - 如何映射表示集合的对象

时间:2015-12-13 13:50:26

标签: java hibernate oop orm hibernate-mapping

对于这个太基本的问题,很抱歉,我没有使用Hibernate的经验,并尝试映射这些类,但没有找到将对象映射到代表列表的另一个对象的示例。

“关键字”属性曾经是字符串列表,如:

import tkinter as tk
import rockpaperscissor as rps


class MyFrame(tk.Frame):
    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.pack()
        self.value = tk.StringVar()
        self.result = tk.StringVar()
        self.choice = ('rock', 'paper', 'scissor')
        self.rps = rps.RockPaperScissor()
        for i in self.choice:
            tk.Radiobutton(self,
                            text=i,
                            variable=self.value,
                            value=i).pack()
        tk.Button(self, text='play', command=self.play).pack()
        tk.Label(self, textvariable=self.result).pack() # textvariable

    def play(self):
        playerA = self.value.get()
        playerB = rps.computer()
        self.rps.play(playerA, playerB)
        self.result.set('result: {0}'.format(self.rps.get_result())) # get_result()

if __name__ == '__main__':
    MyFrame().mainloop()    

但是我将它封装在一个类上以添加更专业的行为,遵循本书" Clean Code"来自Bob C. Martin。但我不知道如何映射它,就好像它在列表是在自己的类中时具有相同的行为。

List<String> keywords; 

1 个答案:

答案 0 :(得分:1)

看起来你将这个成员拆分成一个单独的类主要是为了添加ofPhrase()静态方法。

我建议将该方法放在自己的非JPA类中,命名为KeywordTokenizer,并使其成为非静态方法。这将允许您单独测试tokenizer逻辑,并在测试使用它的其他类时模拟ofPhrase()方法。我想鲍勃叔叔也支持这一点。

更一般地说 - 在我简陋的经历中,JPA对象应该仅用于定义数据结构 - 所有JPA注释内容都足够复杂,值得拥有自己的类。使用&#34;服务&#34;类型类,如上面建议的KeywordTokenizer,包括任何添加的逻辑。