这是在netbeans下的一个保存的操作,谁能帮我解释一下啊
@Action(enabledProperty = "saveNeeded")
    public Task save() {
        return new SaveTask(getApplication());
    }    private class SaveTask extends Task {
        SaveTask(org.jdesktop.application.Application app) {
            super(app);
        }
       @Override protected Void doInBackground() {
            try {
                entityManager.getTransaction().commit();
                entityManager.getTransaction().begin();
            } catch (RollbackException rex) {
                rex.printStackTrace();
                entityManager.getTransaction().begin();
                List<desktopapplication2.Town> merged = new ArrayList<desktopapplication2.Town>(list.size());
                for (desktopapplication2.Town t : list) {
                    merged.add(entityManager.merge(t));
                }
                list.clear();
                list.addAll(merged);
            }
            return null;
        }
        @Override protected void finished() {
            setSaveNeeded(false);
        }
    }
跪求各位大虾!!!
先谢谢了,越详细越好!!!!