powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Repository в Hibernate 5
56 сообщений из 56, показаны все 3 страниц
Repository в Hibernate 5
    #39644005
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начинаю разбираться с Hibernate 5 и не понятна суть работы с бд.

Взял пример в интернете - код ниже.

Не могу одного понять. Смысл создавать service если он попросту дублирует repository по сути.
Подскажите как правильно такое реализовывать. Вообще реализовывать DAO. Что касается Entity мне более менее понятно, как описывать и т.д. но вот сам этот процесс не очень.

Хочется научится правильно делать.

Спасибо.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public interface UserRepository {
    UserEntity save(UserEntity car);
    void update(UserEntity user);
    List<UserEntity> getAll();
    List<UserEntity> getAllByFirstName(String firstName);
    List<UserEntity> getAllByLastName(String lastName);
    List<UserEntity> getAllByGender(String gender);
    UserEntity getById(Long id);
    void remove(Long id);
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
@Repository
@Transactional()
public class UserRepositoryImpl  implements UserRepository {

    @PersistenceContext
    private EntityManager entityManager;

    @Override
    @Transactional
    public UserEntity save(UserEntity user) {
        if(user.getId() != null){
            return entityManager.merge(user);
        } else {
            entityManager.persist(user);
            return user;
        }
    }

    @Override
    public void update(UserEntity user) {

    }

    @Override
    public List<UserEntity> getAll() {
        CriteriaQuery<UserEntity> criteria = entityManager.getCriteriaBuilder().createQuery(UserEntity.class);
        criteria.select(criteria.from(UserEntity.class));
        return entityManager.createQuery(criteria).getResultList();
    }

    @Override
    public List<UserEntity> getAllByFirstName(String firstName) {
         ...
    }

    @Override
    public List<UserEntity> getAllByLastName(String lastName) {
         ...
    }

    @Override
    public List<UserEntity> getAllByGender(String gender) {
         ...
    }

    @Override
    public UserEntity getById(Long id) {
        return entityManager.find(UserEntity.class, id);
    }

    @Override
    public void remove(Long id) {
        UserEntity user = getById(id);
        if(user != null) {
            entityManager.remove(user);
        }
    }
}



Код: java
1.
2.
3.
4.
5.
6.
public interface UserService {
    UserEntity save(UserEntity userEntityy);
    List<UserEntity> getAll();
    UserEntity getById(long id);
    void remove(long id);
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserRepository userRepository;

    @Override
    public UserEntity save(UserEntity userEntityy) {
        return userRepository.save(userEntityy);
    }

    @Override
    public List<UserEntity> getAll() {
        return userRepository.getAll();
    }

    @Override
    public UserEntity getById(long id) {
        return userRepository.getById(id);
    }

    @Override
    public void remove(long id) {
        userRepository.remove(id);

    }
}
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644008
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
забудь эту прокладку как страшный сон...
и будет тебе счастье
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644011
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяTsyklop,
забудь эту прокладку как страшный сон...
и будет тебе счастье
пожалуй - нет. Смысл Вашего комментария тут? Он не несет ничего полезного.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644016
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос не имеет никакого отношения к Hibernate и работе с БД, это чисто архитектурный момент. Причем в данном примере естественно в сервисе нет никакого смысла, но он мог бы появиться - если бы сервис какую-то полезную работу выполнял. Ну например - если бы при сохранении пользователя нужно было какие-то записи вносить в историю, или банально е-мейл/sms/сообщение администратору отправлять - согласись, что отправлению емейла нечего делать в репозитарии, значит он должен находится уровнем выше - в слое бизнес-логики. И тут нам уже внезапно может пригодится наш Service.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644019
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chpashaвопрос не имеет никакого отношения к Hibernate и работе с БД, это чисто архитектурный момент. Причем в данном примере естественно в сервисе нет никакого смысла, но он мог бы появиться - если бы сервис какую-то полезную работу выполнял. Ну например - если бы при сохранении пользователя нужно было какие-то записи вносить в историю, или банально е-мейл/sms/сообщение администратору отправлять - согласись, что отправлению емейла нечего делать в репозитарии, значит он должен находится уровнем выше - в слое бизнес-логики. И тут нам уже внезапно может пригодится наш Service.

окей. как мне правильно построить работу с бд? Создать базовый репозиторий с простыми действиями - select, insert, update, remove и создать репозиторий который будет наследоваться от базового и при этом относится к определенной сущности.К примеру есть UserEntity. Есть некий базовый репозиторий DaoRepository и UserRepository который описывает работу непосредственно с UserEntity.

Так правильно?
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644028
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopК примеру есть UserEntity
покажите как сейчас в хибере вы работаете с сущностью.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644030
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123TsyklopК примеру есть UserEntity
покажите как сейчас в хибере вы работаете с сущностью.
Пока никак не работаю. Хотел написать своё. То что я привел я взял с интернета.

Все что написал я это саму энтити и интерфейс который описывает методы для работы с энтити.
Но при этом сервак не запустился ибо у меня нет реализации. Тут то и стал вопрос как правильно делать.

Мне один человек подсказал такой принцип - https://pastebin.com/ymM0yhgB. Думаю тут не сильно замудрено. Так нормально?
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644032
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopвадяTsyklop,
забудь эту прокладку как страшный сон...
и будет тебе счастье
пожалуй - нет. Смысл Вашего комментария тут? Он не несет ничего полезного.
полезное будет если сможешь без этой прклади работать с базой. и сможешь делать намного больше, и будет работать намного быстрее.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644034
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopПока никак не работаю.
ну, невозможно рассуждать о делениях на слои большого приложения уровня предприятия , если ничего не вообще не писал.
авторСоздать базовый репозиторий с простыми действиями - select, insert, update, remove
вот тут есть пример без репозитария:
18407424
пробуйте.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644035
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяTsyklopпропущено...

пожалуй - нет. Смысл Вашего комментария тут? Он не несет ничего полезного.
полезное будет если сможешь без этой прклади работать с базой. и сможешь делать намного больше, и будет работать намного быстрее.

что на данный момент и делаю. Сейчас я работаю с чистым JDBC. НО!. сейчас все работодатели поголовно помешались на Spring и Hibernate и все его требуют. Да и не то что работодатели, просто проще писать становится бд и прочее. Но приходится жертвовать ресурсами.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644036
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
это для тебя сложно?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try {
			System.out.println("Создать класс-запись в БД");
			Main u = new Main();
			u.setPassword("abc123");
			session.saveOrUpdate(u);
			System.out.println("Сохранили в БД класс без коммита");
		} finally {
			HibernateUtil.commitTransaction();
			System.out.println("Коммит прошёл. Всё");
		}

...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644039
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123вот тут есть пример без репозитария:
18407424
пробуйте.

Хм. инетересно. Тут берется сразу сессия. Подскажите пожалуйста данная сессия будет новая на каждый поток, то бишь на каждый запрос или же одна на все приложение?.

И еще. У меня нет нигде явного создания это сессии. Я так понимаю что это делает Spring или же сам Hibernate
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644041
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopПодскажите пожалуйста данная сессия будет новая на каждый поток, то бишь на каждый запрос
как захочешь.
В вебе рекомендуется на запрос - 0,1 сек и закрываем.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644042
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopSpring или же сам Hibernate
есть развилка.
Либо спринг JPA либо хибер API.
Я предпочитаю второе.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644045
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123как захочешь.
В вебе рекомендуется на запрос - 0,1 сек и закрываем.
Просто ж я её не управляю. Я говорю Спрингу (наверно ему) что положи мне в рест контроллер объект для работы с определенной сущностью, он и кладет. Все.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644048
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopЯ говорю Спрингу (наверно ему) что положи мне в рест контроллер объект для работы с определенной сущностью, он и кладет.
ну значит ты выбрал спринг магию и замечательно.)))
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644049
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
делай пример как у меня но на спринге с EntityManager.
Он вместо репозитария))
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644053
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Tsyklop,
делай пример как у меня но на спринге с EntityManager.
Он вместо репозитария))

Если не сложно можно примерчик. небольшой может.

Спасибо.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644057
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
под рукой нету. Мне без спринга нравится.
Те кто любят спринг подскажут.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644092
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадя,
это для тебя сложно?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try {
			System.out.println("Создать класс-запись в БД");
			Main u = new Main();
			u.setPassword("abc123");
			session.saveOrUpdate(u);
			System.out.println("Сохранили в БД класс без коммита");
		} finally {
			HibernateUtil.commitTransaction();
			System.out.println("Коммит прошёл. Всё");
		}


дело не в сложности, а бессмысленности данного.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644093
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
ты привел минимальный пример, а делаешь вывод о всех случаях. если взять к примеру резульсет , который возвращает пару сотен строк. можно сразу пройтись по нему и обработать. но прокладка сначала запишет всё в объект, и только потом даст с ним работать. память + время...
и селект написанный руками может вернуть данные для которых уже не требуется доп обработки на java. опять время ...
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644102
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tsyklopчто на данный момент и делаю. Сейчас я работаю с чистым JDBC. НО!. сейчас все работодатели поголовно помешались на Spring и Hibernate и все его требуют. Да и не то что работодатели, просто проще писать становится бд и прочее. Но приходится жертвовать ресурсами.
https://www.jooq.org/] jOOQ: The easiest way to write SQL in Java
а работодатели.... либо не в курсе, и тогда пусть "окультуриваются", либо идут лесом...
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644117
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Ты против ООП? Тогда иди лесом.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644118
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
Если тут не появится короткого примера на спринге, делай на Hiber API.
Удачи!
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644126
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,

Смотрите Фаулера Repository инкапсулирует запросы. Service aka Transaction Script инкапсулирует сценарии бизнес-логики.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644156
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяTsyklopпропущено...

пожалуй - нет. Смысл Вашего комментария тут? Он не несет ничего полезного.
полезное будет если сможешь без этой прклади работать с базой. и сможешь делать намного больше, и будет работать намного быстрее.

Без какой прокладки? без сервисов?
Транзакции коллбеках UI делать?
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644162
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тоже на досуге в спринге ковыряюсь, и как понял разница в том, что сервис - это более высокий уровень абстракции над СУБД.

image
Код: java
1.
2.
3.
public interface ImageRepository extends JpaRepository<Image, Long> {

}



product
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public interface ProductRepository extends JpaRepository<Product, Long> {

    List<Product> findAllByName(String name);

    @Query("SELECT p FROM Product p " +
            "LEFT JOIN FETCH p.categories " +
            "LEFT JOIN FETCH p.brand " +
            "LEFT JOIN FETCH p.images " +
            "LEFT JOIN FETCH p.tags " +
            "LEFT JOIN FETCH p.relations " +
            "LEFT JOIN FETCH p.mainImage " +
            "WHERE p.id = (:id)")
    Optional<Product> findByIdAndFetchAllEagerly(@Param("id") Long id);
}




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
@Service
public class ProductService {

    private final ProductRepository productRepository;
    private final ImageRepository imageRepository;

    public ProductService(ProductRepository productRepository, ImageRepository imageRepository) {
        this.productRepository = productRepository;
        this.imageRepository = imageRepository;
    }

    @Transactional
    public Product deleteImage(Long productId, Long imageId) {

        final Product product = productRepository
                .findByIdAndFetchAllEagerly(productId)
                .orElseThrow(() -> new EntityNotFoundException("Product with id = " + productId + " not found"));

        final Image image = imageRepository
                .findById(imageId)
                .orElseThrow(() -> new EntityNotFoundException("Image with id = " + imageId + " not found"));

        product.getImages().remove(image);

        // unlink main image
        if (product.getMainImage() != null && product.getMainImage().equals(image)) {
            product.setMainImage(null);
        }

        productRepository.save(product);
        imageRepository.delete(image);

        return product;
    }

}




Но меня все мучает один вопрос: чем лучше оперировать между методами проекта, ключами сущностей или самими сущностями?
Сначала пытался второе (передавать сущности), но они все равно детачатся от сессии и их приходится "перезагружать" и начинаю приходить к мнению, что смысла их держать в памяти нет.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644163
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CheblinTsyklopчто на данный момент и делаю. Сейчас я работаю с чистым JDBC. НО!. сейчас все работодатели поголовно помешались на Spring и Hibernate и все его требуют. Да и не то что работодатели, просто проще писать становится бд и прочее. Но приходится жертвовать ресурсами.
https://www.jooq.org/] jOOQ: The easiest way to write SQL in Java
а работодатели.... либо не в курсе, и тогда пусть "окультуриваются", либо идут лесом...
в моей стране популярен спринг и хибер.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644165
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадя,
это для тебя сложно?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try {
			System.out.println("Создать класс-запись в БД");
			Main u = new Main();
			u.setPassword("abc123");
			session.saveOrUpdate(u);
			System.out.println("Сохранили в БД класс без коммита");
		} finally {
			HibernateUtil.commitTransaction();
			System.out.println("Коммит прошёл. Всё");
		}



Зачем commit помещать в секцию finally ?
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644166
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopCheblinпропущено...

https://www.jooq.org/] jOOQ: The easiest way to write SQL in Java
а работодатели.... либо не в курсе, и тогда пусть "окультуриваются", либо идут лесом...
в моей стране популярен спринг и хибер.

Наверное это для тех, кто хибер не осилил.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644170
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,
Это ниже вроде ОРМ сам умеет. Чем sql руками писать.
Давайте обсуждать базовые возможности.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public interface ProductRepository extends JpaRepository<Product, Long> {

    List<Product> findAllByName(String name);

    @Query("SELECT p FROM Product p " +
            "LEFT JOIN FETCH p.categories " +
            "LEFT JOIN FETCH p.brand " +
            "LEFT JOIN FETCH p.images " +
            "LEFT JOIN FETCH p.tags " +
            "LEFT JOIN FETCH p.relations " +
            "LEFT JOIN FETCH p.mainImage " +
            "WHERE p.id = (:id)")
    Optional<Product> findByIdAndFetchAllEagerly(@Param("id") Long id);
}
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644174
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettЗачем commit помещать в секцию finally ?да. Ты прав конечно.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644181
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Hett,
Это ниже вроде ОРМ сам умеет. Чем sql руками писать.
Давайте обсуждать базовые возможности.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public interface ProductRepository extends JpaRepository<Product, Long> {

    List<Product> findAllByName(String name);

    @Query("SELECT p FROM Product p " +
            "LEFT JOIN FETCH p.categories " +
            "LEFT JOIN FETCH p.brand " +
            "LEFT JOIN FETCH p.images " +
            "LEFT JOIN FETCH p.tags " +
            "LEFT JOIN FETCH p.relations " +
            "LEFT JOIN FETCH p.mainImage " +
            "WHERE p.id = (:id)")
    Optional<Product> findByIdAndFetchAllEagerly(@Param("id") Long id);
}



Так это и не SQL, а HQL и его разбирает как раз ORM.
Я сходил в интернет и посмотрел там, как это сделать. На сколько помню вариантов всего два: представленный выше и через NamedEntityGraph. Второе мне показалось избыточным в моем случае, пока и так сойдет.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644182
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettно они все равно детачатся от сессии исессии короткие и не отсоединяй.
Нужен пример.
В примере выше удаляй картинку по маппингу и каскаду.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644183
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettНа сколько помню вариантов всего два:Criteria?
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644186
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Hettно они все равно детачатся от сессии исессии короткие и не отсоединяй.
Нужен пример.
В примере выше удаляй картинку по маппингу и каскаду.

Под рукой кода нет.
Делаю админку в вадине, открываю выбранный в гриде entity для редактирования попапе:
1. По клику на row в гриде сохраняю selectedEntity в свойстве одной из вьюх
2. По нажатию кнопки создает другой лейаут, в который передается этот selectedEntity.
Как понимаю передаю его неявно через сессию.

С одной стороны не нужно делать лишний запрос, так как когда открываешь "попап", то все данные для его рендеринга уже есть. Но когда нужно сохранить entity - его все равно приходится перезагрузить, чтобы приаттачить к базе и как то мне это не нравится.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644188
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123HettНа сколько помню вариантов всего два:Criteria?
В спринге репозитории на базе интерфейсов делаются. Хотя подозреваю, что можно и классом это сделать, пока не знаю как лучше. Во всяком случае через графы, как мне кажется, будет удобнее.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644190
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettприаттачить к базе
*к сессии
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644192
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettДелаю админку в вадине,ну, там всё другое.
Это же вадин).
А в классике передают параметром не id а объект. Потом через dto типа json на клиента.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644195
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettВ спринге репозитории на базе интерфейсов делаются
До сих пор спорный вопрос в вебе.
Кто то говорит что и менеджер сам является репозиторием.
Если брать шарп, то там внутри EF тоже репозиторий и городить его не нужно.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644200
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett,
Что в вашем случае делает Service и Repository? подскажите пожалуйста. ибо не понимаю зачем их оба.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644204
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopHett,
Что в вашем случае делает Service и Repository? подскажите пожалуйста. ибо не понимаю зачем их оба.
Imho
Без сервисного слоя никак, а репо я бы заменил тем кто сохраняет сущности.
И плевать что принято интерфейсами что то там.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644206
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopHett,
Что в вашем случае делает Service и Repository? подскажите пожалуйста. ибо не понимаю зачем их оба.

Репозиторий предоставляет интерфейс для управления конкретной сущностью.
Сервис находится на уровне выше и управляет сущностями используя репозитории. При этом он может оперировать сразу несколькими типами сущностей (как в моем примере, удаляя картинку мы ее отвязываем от продукта).
Но это мое видение, не знаю на сколько корректное.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644210
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123TsyklopHett,
Что в вашем случае делает Service и Repository? подскажите пожалуйста. ибо не понимаю зачем их оба.
Imho
Без сервисного слоя никак, а репо я бы заменил тем кто сохраняет сущности.
И плевать что принято интерфейсами что то там.

Да заменить то можно, но больше кода писать придется. И это как раз тот случай, когда больше - не значит лучше. ИМХО.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644227
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett
Репозиторий предоставляет интерфейс для управления конкретной сущностью.
Сервис находится на уровне выше и управляет сущностями используя репозитории. При этом он может оперировать сразу несколькими типами сущностей (как в моем примере, удаляя картинку мы ее отвязываем от продукта).
Но это мое видение, не знаю на сколько корректное.

То бишь репозиторий относится к сущности определенной а сервис один и в нем можно делать действия с репозиториями? или как. чет не догоняю.

Я в инете нашел пример. В нем были и репозитории и сервисы. Но штука в том что они были идентичны. что написанный репозиторий, что сервис описывали и реализовывали одни и те же методы. Может я не так понял. хз
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644229
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettно больше кода писать придется.
Не верю, т.к.
А) несколько помню ты делал EJB. Для него конечно больше.
Б) управлять сущностью может менеджер.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644236
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Hettно больше кода писать придется.
Не верю, т.к.
А) несколько помню ты делал EJB. Для него конечно больше.
Б) управлять сущностью может менеджер.

Ну вот приведенном выше мною примере есть метод `findByIdAndFetchAllEagerly`
и если вдруг нужно будет найти Product и подгрузить все зависимости в разных сервисах, то придется либо дублировать запрос, либо инъектить один сервис в другой, что не очень красиво (тем более так можно и перекресные ссылки получить).
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644239
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так получается, что в репозиториях - запросы.
В сервисах - бизнеслогика.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644241
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
Вот образец сервсного слоя:
12416653
Начинай от него плясать. Т.к. это бизнес логика!!!
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644242
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Tsyklop,
Вот образец сервсного слоя:
12416653
Начинай от него плясать. Т.к. это бизнес логика!!!

Вот как раз тот случай, когда у возникает вопрос: есть ли смысл передавать в метод всю сущность, если нужен только id.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644243
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettи подгрузить все зависимости в разных сервисах,
Не понял.
Получаем продукт с айдишниками FK. Т.е. ленивыми.
В сервисном слое подгрузка автоматическая при попытке прочитать свойство.
Так?
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644244
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то сегодня не выспался и когда быстро пишу - теряю слова
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644249
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettВот как раз тот случай, когда у возникает вопрос: есть ли смысл передавать в метод всю сущность, если нужен только id.блин! Да как ты логику будешь писать если нужен Весь класс юзверь. А не его айди.
Потом править контракт на метод?
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644250
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Hettи подгрузить все зависимости в разных сервисах,
Не понял.
Получаем продукт с айдишниками FK. Т.е. ленивыми.
В сервисном слое подгрузка автоматическая при попытке прочитать свойство.
Так?

Гмм, кстати да, оно и в моем примере теперь лишнее (eagerly загрузка).
Я когда выносил в сервис, - упустил этот момент.
Но чисто гипотетически. Гипотетически... возможна такая ситуация, когда в двух разных сервисах нужны будут данные полученные одинаковым запросом.
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644251
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123HettВот как раз тот случай, когда у возникает вопрос: есть ли смысл передавать в метод всю сущность, если нужен только id.блин! Да как ты логику будешь писать если нужен Весь класс юзверь. А не его айди.
Потом править контракт на метод?

Ох да, я не увидел разницы в названии Trade и Trade r
...
Рейтинг: 0 / 0
Repository в Hibernate 5
    #39644254
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettвозможна такая ситуация, когда в двух разных сервисах нужны будут данные полученные одинаковым запросом.хибер обеспечивает одинаковый объект и межсессионну изолированность.
Два разных сервиса это ничто в программировании. Ты про методы разные?
Давай не усложнять хибер и орм.
...
Рейтинг: 0 / 0
56 сообщений из 56, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Repository в Hibernate 5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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