Форум программистов, компьютерный форум CyberForum.ru

Java EE (J2EE)

Войти
Регистрация
Восстановить пароль
 
Alradalion
95 / 95 / 43
Регистрация: 13.09.2013
Сообщений: 383
#1

Hibernate - Java EE

16.12.2016, 14:49. Просмотров 244. Ответов 7
Метки нет (Все метки)

Написал я конфигурацию, написал Entity Book и Author и Repository к ним.
И решил написать класс Library

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Component
public class LibraryImpl implements Library {
 
ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(MainConfig.class);
 
final AuthorRepo authorRepo = ctx.getBean(AuthorRepo.class);
final BookRepo authorRepo = ctx.getBean(BookRepo.class);
 
//    @Autowired
//    private BookRepo bookRepo;
 
public void addBook(Book book) {
Book savedBook = bookRepo.saveAndFlush(book);
}
И все бы хорошо, но как-то
Java
1
2
3
4
ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(MainConfig.class);
 
final AuthorRepo authorRepo = ctx.getBean(AuthorRepo.class);
final Book Repo authorRepo = ctx.getBean(Book Repo.class);
Сильно смущает в классе. А если вынести в бин, он его не подхватывает. И вообще не уверен, что можно вынести в бин

И можно ли это вообще будет в майне запустить, как
Library library = new LibraryImpl();
library.saveBook(new Book());
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2016, 14:49     Hibernate
Посмотрите здесь:

hibernate cascade Java EE
hibernate Java EE
Java EE hibernate и метод
Java EE ManyToOne in Hibernate
Hibernate Java EE
Hibernate @Formula Java EE
Подключение к БД (Hibernate) Java EE
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1466 / 833 / 69
Регистрация: 26.03.2010
Сообщений: 2,841
16.12.2016, 15:01     Hibernate #2
Цитата Сообщение от Alradalion Посмотреть сообщение
И можно ли это вообще будет в майне запустить, как
Library library = new LibraryImpl();
Такие вопросы появляются от непонимания того, что вы используете. Прочтите подробнее про аннотацию Component. А заодно и про dependency inejction.

Добавлено через 3 минуты
Цитата Сообщение от Alradalion Посмотреть сообщение
@Component
Этим самым вы сказали контейнеру, чтобы он управлял жизненным циклом этого класса. Так что вы не вправе создавать новый инстанс сами, но зато вы вполне можете запросить у контейнера нужный инстанс.
Alradalion
95 / 95 / 43
Регистрация: 13.09.2013
Сообщений: 383
16.12.2016, 16:09  [ТС]     Hibernate #3
neske, да, для меня это пока легкая магия...
Я правильно понимаю, что мне надо написать что-то вроде:
Java
1
2
3
4
5
6
7
8
9
10
11
12
@Component
public class LibraryImpl implements Library {
 
@Autowired
private BookRepo bookRepo;
 
@Autowired
private AuthorRepo authorRepo;
 
public void addBook(Book book) {
Book savedBook = bookRepo.saveAndFlush(book);
}
А в main
Java
1
2
3
4
5
6
public class Application {
    public static void main(String[] args) {
    ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(MainConfig.class);
    Library a= ctx.getBean(Library.class);
    }
}
neske
1466 / 833 / 69
Регистрация: 26.03.2010
Сообщений: 2,841
16.12.2016, 16:39     Hibernate #4
Цитата Сообщение от Alradalion Посмотреть сообщение
мне надо написать что-то вроде:
да, именно так.

Почитайте "Spring 4 для профессионалов". Там уже в начале разбирается, как работать с контекстом в standalone приложениях.
Alradalion
95 / 95 / 43
Регистрация: 13.09.2013
Сообщений: 383
16.12.2016, 17:03  [ТС]     Hibernate #5
Цитата Сообщение от neske Посмотреть сообщение
Почитайте "Spring 4 для профессионалов". Там уже в начале разбирается, как работать с контекстом в standalone приложениях.
Спасибо, почитаю.
Еще вопрос, мне, получается, надо создать бин
Java
1
2
3
4
  @Bean
    Library library() {
        return new LibraryImpl();
    }
И проблема в том, что LibraryImpl имеет конструктор, в который передается id
neske
1466 / 833 / 69
Регистрация: 26.03.2010
Сообщений: 2,841
16.12.2016, 17:09     Hibernate #6
Цитата Сообщение от Alradalion Посмотреть сообщение
Еще вопрос, мне, получается, надо создать бин
не нужно, его созданием займется контейнер

Цитата Сообщение от Alradalion Посмотреть сообщение
И проблема в том, что LibraryImpl имеет конструктор, в который передается id
это уже вы неправильно спроектировали)
Alradalion
95 / 95 / 43
Регистрация: 13.09.2013
Сообщений: 383
16.12.2016, 17:18  [ТС]     Hibernate #7
Цитата Сообщение от neske Посмотреть сообщение
не нужно, его созданием займется контейнер
У меня тогда возникает ошибка No qualifying bean of type [com.my.Library] is defined
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2016, 17:25     Hibernate
Еще ссылки по теме:

GlassFish + Hibernate Java EE
Hibernate Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister Java EE
Hibernate validator Java EE
Java EE Spring + Hibernate
Hibernate 5 spring Java EE

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
neske
1466 / 833 / 69
Регистрация: 26.03.2010
Сообщений: 2,841
16.12.2016, 17:25     Hibernate #8
Цитата Сообщение от Alradalion Посмотреть сообщение
У меня тогда возникает ошибка No qualifying bean of type [com.my.Library] is defined
Очевидно какая-то ошибка в конфигурации. Гляньте аналогичные примеры в интернете, их море
Yandex
Объявления
16.12.2016, 17:25     Hibernate
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru