SE / FX中的JPA:如何整合实体& TableView中使用的数据模型

时间:2015-03-27 11:18:13

标签: java jpa javafx

使用:Java SE 8,JavaFX 8,JPA 2.1。我正在学习JavaFX 8(与jdk 8集成),我已经了解SE和EE。所以我已经在EE Web应用程序中使用JPA了。我的问题是:当您在JavaFX应用程序中创建表时,最佳实践是实现一个定义数据模型的类,并提供方法和字段以进一步使用该表。例如,Person类用于定义地址簿中的数据

public class Person {   

    private final SimpleStringProperty firstName;
    private final SimpleStringProperty lastName;

所以实体如何适应这种情况,我的意思是Person ENTITY和Person数据模型。

这里的问题不能回答我的问题。感谢

1 个答案:

答案 0 :(得分:1)

我可以说您可以像以前一样为Web应用程序创建实体,

@Entity
@Table(name="Person")
public class Person {   
//..  your column and setters and getters
}

personDao:

public interface PersonDao{

public List<Person> listPerson();
//....
}

PersonDaoImpl:

public class PersonDaoImpl implements PersonDAO {


@Override
public List<Person> listPerson() {
    // TODO Auto-generated method stub
    List<Person> list=new ArrayList<>();
    Session s=HibernateUtil.openSession();
    s.beginTransaction();
    list=s.createQuery("from Person").list();
    s.getTransaction().commit();
    s.close();
    return list;
}

PersonService:

public interface PersonService  {
  public List<Person> listPerson();
}

PersonServiceImpl:

public class PersonServiceImpl   implements PersonService{
private  PersonDao personDAO = new PersonDaoImpl();

@Override
public List<Person> listPerson() {
    // TODO Auto-generated method stub
    return  personDAO.listPerson();
}

然后您可以在控制器中使用它:

   public class ScreenController implements Initializable{

public ObservableList<Person> data; 

private PersonService personService=new PersonServiceImpl(); 


@FXML
private TableView<Person> table_person;
@FXML
private TableColumn<Person, String> firstName;
@FXML
private TableColumn<Person, String> lastName;

@Override
public void initialize(URL url, ResourceBundle rb) {

firstName.setCellValueFactory(new PropertyValueFactory<Person, String>("firstName")); 
lastName.setCellValueFactory(new PropertyValueFactory<Person, String>("lastName"));

data  =  FXCollections.observableArrayList();  
data.addAll(personService.listPerson());
table_person.setItems(data);

//... 
}