GWT с примером JPA и Gilead - PullRequest
       20

GWT с примером JPA и Gilead

0 голосов
/ 26 июля 2010

Может ли кто-нибудь предоставить мне пример GWT + JPA + Gilead, кажется, я не могу найти что-либо в Google с этой темой.

Спасибо


Спасибо Максим,

Я использую это не на EJB-сервере, а на Tomcat. Я понимаю шаг, который вы указали выше, но не уверен, как сделать следующий шаг, который заключается в настройке PersistentBeanManager и отправке моего объекта по проводам.

Вот то, что я пока имею, но у меня нет шанса проверить, работает ли это еще. Если вы видите проблему с этим, дайте мне знать, спасибо.

private HibernateJpaUtil gileadUtil = new HibernateJpaUtil ();

приватная статическая конечная фабрика EntityManagerFactory = Persistence.createEntityManagerFactory ( "MyPersistentUnit");

public MyServlet() {

    gileadUtil.setEntityManagerFactory(factory);

    PersistentBeanManager pbm = new PersistentBeanManager();
    pbm.setPersistenceUtil(gileadUtil);
    pbm.setProxyStore(new StatelessProxyStore());

    setBeanManager(pbm);

    Book book = new Book();
    Book cloned = (Book) pbm.clone(book);               

            //send the cloned book over the wire

}

Ответы [ 3 ]

1 голос
/ 02 февраля 2011

Я попытался настроить свой проект очень похожим, но также столкнулся с исключением из спящего режима. Я понял, что при использовании JPA мне нужно инициализировать HibernateJPAUtil с EntityManagerFactory. Когда я сделал это, это сработало. Это изменит ваши первые две строки кода на:

public class MyServiceImpl extends PersistentRemoteService implements MyService {

  public MyServiceImpl() {
    final EntityManagerFactory emf = Persistence.createEntityManagerFactory("MA");    
    final PersistentBeanManager persistentBeanManager = new PersistentBeanManager();
    persistentBeanManager.setPersistenceUtil(new HibernateJpaUtil(emf)); // <- needs EMF here
    persistentBeanManager.setProxyStore(new StatelessProxyStore());
    setBeanManager(persistentBeanManager);
  }

  @Override // from MyService
  public Stuff getStuff() {
    // no need for clone/merge here, as Gilead's GWT PersistentRemoteService does this for us
    ...
    return stuff;
  }
}

Также я использовал net.sf.gilead.pojo.java5.legacy.LightEntity как базовый класс для всех моих сущностей (обратите внимание на пакет java5.legacy).

0 голосов
/ 20 июня 2011

Надеюсь, этот блог поможет вам.
http://zawoad.blogspot.com/2010/06/google-app-engine-jdo-and-gxtext-gwt.html

Это не прямой пример того, что вы хотите, но подход должен быть таким.Мы использовали тот же подход в нашем проекте с GWT + JPA + EJB.для отправки вашего объекта по проводам вам необходим объект передачи данных (DTO).Преобразуйте этот DTO в объект Entity и делайте все, что вы хотите.

0 голосов
/ 27 июля 2010

Организация:

//imports
@Entity
public class Book extends LightEntity implements Serializable {

    private static final long serialVersionUID = 21L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String title;

    @Lob
    private String description;

    @ManyToMany(cascade = CascadeType.ALL)
    private List<Author> author;

    // Getters and setters
    @Override
    public int hashCode() {
       int hash = 0;
       hash += (getId() != null ? getId().hashCode() : 0);
       return hash;
    }

    @Override
    public boolean equals(Object object) {
       // TODO: Warning - this method won't work in the case the id fields are not set
       if (!(object instanceof Book)) {
           return false;
       }
       Course other = (Book) object;
       if ((this.getId() == null && other.getId() != null) || (this.getId() != null && !this.id.equals(other.id))) {
           return false;
       }
       return true;
   }
}

Объект Book выглядит так же.

Затем используйте его как обычный EJB на вашем сервере и как обычный DTO на вашем клиенте. Не забудьте добавить библиотеки Gilead в ваш проект.

...