• Как в angular2 отследить изменение объекта?

    Изменения можно отслеживать через реализацию Observer-ов из библиотеки rxjs : Вот тут неплохо объясняется как это сделать : href="https://coryrylan.com/blog/angular-2-observable-da..."> . Но есть более привлекательная "обертка" над Обсерверами - Subject также из библиотеки rxjs, в cookbook-е хорошо показывается принцип работы: href="https://angular.io/docs/ts/latest/cookbook/compone..."> (т.к работа с Subject только один из примером, то через ctrl+f найдите Parent and children communicate via a service)
    Ответ написан
    Комментировать
  • Как сохранить коллекцию объектов при помощи JPA?

    Waynes
    @Waynes Автор вопроса
    В общем рабочих решения по итогу 2. Если кто-нибудь сможет предложить что-нибудь более "достойное" буду очень признателен!

    Наш JSON от клиента:

    {"subCategories":[{"name":"Детские игрушки"},{"name":"Детское питание"},{"name":"Мамина-рация"}]}


    + Мы еще принимаем ID Высшей категории с помощью : @PathVariable(value = "highCategoryId")

    Десериализуем c помощью класса-Wrapper-a :

    public class SubCategoryWrapper {
    
        private List<SubCategory> subCategories;
    
        /**
         * @return the subCategories
         */
        public List<SubCategory> getSubCategories() {
            return subCategories;
        }
    
        /**
         * @param subCategories the persons to set
         */
        public void setSubCategories(List<SubCategory> subCategories) {
            this.subCategories = subCategories;
        }
    
    }


    Вот собственно сам SubCategory.java:
    @Entity
    @Table(name = "sub_category")
    public class SubCategory extends BaseModel {
    
    
        @Column(name = "NAME")
        private String name;
    
    
        @ManyToOne(fetch = FetchType.LAZY, cascade=CascadeType.ALL)
        @JoinColumn(name = "HIGH_CATEGORY_ID",referencedColumnName = "ID")
        private HighCategory highCategory;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public HighCategory getHighCategory() {
            return highCategory;
        }
    
        public void setHighCategory(HighCategory highCategory) {
            this.highCategory = highCategory;
        }
    
        @Override
        public String toString() {
            return "Имя Подкатегории: "+getName();
        }
    
    }


    В DAO слое (Туда приход highCategoryId и SubCategoryWrapper ) у нас есть 2 пути :
    1:
    HighCategory highCategory=entityManager.find(HighCategory.class,highCategoryId);
            highCategory.setSubCategories(subCategories.getSubCategories());

    В этом способе в SubCategoryWrapper, в каждом объекте коллекции List не проинициализирована переменная highCategory. Поэтому тут требуется сделать дополнительные манипуляции с сетером в HighCategory:
    public void setSubCategories(List<SubCategory> subCategories) {
            this.subCategories = subCategories;
            for(SubCategory subCategory: subCategories){
                subCategory.setHighCategory(this);
            }

    Может кто знает, как проинициализировать ее без таких плясок?

    2-ой способ:

    for (SubCategory subCategory : subCategories.getSubCategories()) {
                entityManager.createNativeQuery("INSERT INTO sub_category(NAME,HIGH_CATEGORY_ID) VALUES(?,?)")
                        .setParameter(1,subCategory.getName())
                        .setParameter(2,highCategoryId).executeUpdate();
    
            }
    Ответ написан
    Комментировать
  • Angular 2 уже пора?

    Попробуйте пока поиграться с ним, сделать какие-нибудь тривиальные вещи...и возможно вы влюбитесь в это прекрасное творение как и я =) В действительности же, я не знаю, что значит "пора", для людей которые зарабатывают программированием. Могу лишь предположить, что для вас важно, чтобы проект уже был стабилен, и глобальных изменений не вносилось, дабы много раз "не перелопачивать" код. Но это уже поздняя бета, к тому же разработчики не раз говорили, что если изменения и будут, то это скорее дополнение и расширения существующей версии. Еще один, как я считаю, немаловажный плюс, как сообщество отреагировало на выпуск беты: Яков Фейн уже написал книгу по Angular-у, а человек, вроде, серьезный, стал бы он давать то, что не будет работать уже завтра?Думаю - нет. Есть уважаемые youtube блогеры, которые уже сняли материал, к примеру: thenewboston, Mindspace. Так же проводилось множество конференций именно после выхода беты.

    Я же человек, который занимается программированием всего-лишь 5 месяцев, мой основной ЯП - java. Для того, чтобы зарабатывать этим ремеслом мне необходимо продемонстрировать свои навыки, и вот для этой цели я разрабатываю свой "универсальный магазин", а-ля catalog.onliner.by + еще одно крыло, в виде админки всего сайта. Сейчас мой стек: back-end: Spring MVC +Secutiry, Jpa(Hibernate), front-end: Angular 2(хотя сначала был 1-ый). Да, у меня были проблемы,допустим, с тем как сделать динамический роутинг, или организовать взаимодействия между различными элементами router-outlet, что решилось с помощью удобнейших провайдеров( фабрик в 1-ом ангуляре), валидация форм, сортировка данных, можно перечислять и перечислять задачи. Но все же решаемо, тем более когда вы во фронденде не первый день. Но какое же удовольствие ты получаешься при разработке на этом языке, вместе с java, Typescript+Angular 2 ... типизированность, замечательная структурируемость и модульность, приложение у меня уже довольно-таки большое, конечно, по сравнению с корпоративными оно должно казаться небольшим, если не меньше, но в ветвях своего приложения ориентируешься относительно быстро,изменения кода почти безболезненны, хотя ,наверное, это всего-лишь мой стиль написания кода...но помню пытался, что-то похожее начать делать на Jquery...не знаю как лучше это обозвать, скорее: лапша и все больно менять.
    Возможно я и потратил немного времени на изучение Angular-a, столкнулся с некоторыми проблемами,писал сюда, на SO, на github разработчикам, но я думаю, что это вполне нормально для нового ЯП?)
    Ответ написан
    3 комментария