Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / EJB Entities Model + WEB Model / 16 сообщений из 16, страница 1 из 1
02.08.2007, 15:45:53
    #34701666
AndreySJ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
Изучаю EJB3. Посмотрел сановские примеры работы EJB + Web Tier. Возникли такие вопросы:
В примерах используется набор entity-классов, которые мапятся на соответсвующие таблицы БД. Те, в пакете entity есть классы с анотацией @Entity: Accоut, Customer ... Также есть пакет util, в которм - аналоги этих классов - простые бины, содержащие теже самые поля + кое-какие бизнес методы: AccountDetail, CustomerDetail.
Session bean - AccountController выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
@Stateful
 public   class  AccountControllerBean  implements  AccountController {
    @PersistenceContext
     private  EntityManager em;
     private  String accountId;

     public   Long  createAccount(AccountDetails details,  Long  customerId) {
        Account account =  [b]null ;[/b]
        Customer customer =  null ;
        ...

        customer = em.find(Customer. class ,  new   Long (customerId));

        account =  new  Account(
                        details.getType(),
                        details.getDescription(),
                        details.getBalance(),
                        details.getCreditLine(),
                        details.getBeginBalance(),
                        details.getBeginBalanceTimeStamp());
        em.persist(account);
        account.addCustomer(customer);
         return  account.getId();
    }

Те метод createAccount принимает AccountDetails который заполняется на уровне Web презентайшн. Затем создается Account - все его поля аналогичны AccountDetails).

Тоже самое с получение списка, возвращется лист Account-ов, создается аналогичный лист AccountDetails, который и возвращается.

Зачем использовать по сути 2 одинаковые модели ? Почему нельзя использовать только классы модели из пакета entity в том числе и на презентайшен уровне ? Почему нельзя на презентайшен уровне создать Account и передать его прямо в метод createAccount ?
...
Рейтинг: 0 / 0
02.08.2007, 16:22:35
    #34701844
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
это паттерн Data Transfer Object имхо. по сути здесь лишний, я
всегда сразу фигачу entity
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
02.08.2007, 16:26:48
    #34701875
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
AndreySJЗачем использовать по сути 2 одинаковые модели ? Почему нельзя использовать только классы модели из пакета entity в том числе и на презентайшен уровне ? Почему нельзя на презентайшен уровне создать Account и передать его прямо в метод createAccount ?
Когда модели совпадают это жуткое убожество. Но иногда бывает удобно подготовить данные для уровня презентации. Тогда одна модель трансформируется в другую.

А тот пример что вы нашли, наверное тупое следование J2EE паттернам. Можно ссылочку если не сложно. Лично я в своих проектах всегда предпочитаю делать сквозную модель на все уровни.
...
Рейтинг: 0 / 0
02.08.2007, 16:28:21
    #34701887
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
это такое старое джей ту ии поверье (dto, valueobject, form)
довод: LazyInitializationException
но это не проблема.

на самом деле entity на presentation уже модно.
глянте книжки по хиберу там это есть
...
Рейтинг: 0 / 0
02.08.2007, 16:34:27
    #34701928
AndreySJ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
http://java.sun.com/javaee/5/docs/tutorial/doc/JavaEETutorialFront.html (Download Tutorial Bundle) там док с примерами. Пример - examples\dukesbank\dukesbank-ejb
...
Рейтинг: 0 / 0
02.08.2007, 16:57:25
    #34702048
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
AndreySJhttp://java.sun.com/javaee/5/docs/tutorial/doc/JavaEETutorialFront.html (Download Tutorial Bundle) там док с примерами. Пример - examples\dukesbank\dukesbank-ejb

java.sun.com/javaee/*/tutorial вообще один из самых убогих материалов по Java которые я когда либо встречал. Почитайте что ли хороших книжек, вместо него.
...
Рейтинг: 0 / 0
02.08.2007, 17:13:56
    #34702120
AndreySJ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
Спасибо. Понял. Читаю и книги, но хотел попробовать примеры.
Еще вопрос: Подскажите плиз как правильно использовать Stateful Session Bean например с JSF. Проблема такая. Допустим есть Stateful Session Bean (SFImpl), внутри которого есть ссылка на Stateless Session Beab (SSImpl) :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
@Stateless
 public   class  SSImpl  implements  SS {

	@PersistenceContext
	 private  EntityManager em;

         public   void  flusgProcess() {
              em.flush();
        }
 ...
}

@Stateful
 public   class  SFImpl  implements  SF {
	@EJB SS ss;

         public   void  someMethod() {
             ss.flushProcess();
        }
}

C JSF связан какой то managed bean - ManagedBean:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 public   class  ManagedBean {
    @EJB SF sf;

     public   void  confirm() {
        sf.someMethod();
    }

}

Так как Stateful Session Bean связан с конкретным пользователем, но метод ManagedBean.confirm() могут вызывать любые пользователи как правильно организовать работу с Stateful Session Bean в многопользоветельской среде ?
...
Рейтинг: 0 / 0
02.08.2007, 18:22:11
    #34702389
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
jsf+ejb3 = a lot of pain

как добиться такого injectionа

Код: plaintext
1.
2.
3.
4.
5.
6.
 public   class  ManagedBean {
    @EJB SF sf;
     public   void  confirm() {
        sf.someMethod();
    }
}
я не представляю

альтернатива
http://www.jboss.com/products/seam/whyseam

можно плакать
http://icoloma.blogspot.com/search/label/jsf

нагуглил
http://www.tavutaito.fi/tutorials/jsf-facelets/index.html
...
Рейтинг: 0 / 0
02.08.2007, 18:34:17
    #34702428
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
AndreySJТак как Stateful Session Bean связан с конкретным пользователем, но метод ManagedBean.confirm() могут вызывать любые пользователи как правильно организовать работу с Stateful Session Bean в многопользоветельской среде ?
Ваапче-то для Statefull там должно быть все прозрачно, пользовательская сессия должна без проблем передаваться. Хотя я только теоретик JSF/EJB. Так как на практике эти технологии буду использовать только по нужде и никогда по собственому желанию.
...
Рейтинг: 0 / 0
02.08.2007, 18:55:12
    #34702482
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
если речь об этом то можно

в сессионном managed bean'е держать ссылку на StatefulSB. (но лукапить надо самому)
...
Рейтинг: 0 / 0
02.08.2007, 19:19:06
    #34702528
AndreySJ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
Те, если JSF-ый managed bean (ManagedBean) объявить принадлежащим scope SESSION, то такое объявление:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 public   class  ManagedBean {
    @EJB SF sf (<- stateful session bean);

     public   void  confirm() {
        sf.someMethod();
    }

}
будет вполне приемлемым?
...
Рейтинг: 0 / 0
03.08.2007, 10:22:16
    #34703264
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
вот
Код: plaintext
    @EJB SF sf (<- stateful session bean);

это требует, что бы web layer вашего приложения грузился хитрым classloaderом который реализует такой injection.
можно мне ссылку про это ?
...
Рейтинг: 0 / 0
03.08.2007, 10:32:48
    #34703306
AndreySJ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
В спеке J2EE 5 классы, поддерживающие DI.

Component classes supporting injection:
Servlet: servlets, servlet filters, event listeners
JSP: tag handlers, tag library event listeners
JSF: scoped managed beans
JAX-WS: service endpoints, handlers
EJB: beans, interceptors
Java EE platform: main class (static), login callback handler

Реально я пока проверял на сервлетах - работает.
...
Рейтинг: 0 / 0
03.08.2007, 10:46:36
    #34703346
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
у..у мля ..

надо будет читкануть
...
Рейтинг: 0 / 0
03.08.2007, 11:56:26
    #34703573
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
AndreySJВ спеке J2EE 5 классы, поддерживающие DI.

Component classes supporting injection:
Servlet: servlets, servlet filters, event listeners
JSP: tag handlers, tag library event listeners
JSF: scoped managed beans
JAX-WS: service endpoints, handlers
EJB: beans, interceptors
Java EE platform: main class (static), login callback handler

Реально я пока проверял на сервлетах - работает.
Java EE platform: main class (static) это что такое? Как туда инжектить?
...
Рейтинг: 0 / 0
03.08.2007, 12:37:57
    #34703746
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB Entities Model + WEB Model
думаю так

авторJava™ Platform, Enterprise Edition (Java EE) Specification,
CHAPTER EE.9 Application Clients
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / EJB Entities Model + WEB Model / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]