Java

Член од
5 јануари 2008
Мислења
2.697
Поени од реакции
2.909
Koi online kursevi se najdobri za izucuvane na najosnovno pocetno nivo od Java, Ili opsto koi se najdobri odnosno vo koi najdobro e objasneto?
pluralsight, coursera, edx, tutsplus, codecademy...?
Head-First-Java, во книгава се ти е нацртано, и многу лесно се сфаќа и интересна е, се е напишано "brain friendly". Оваа ти е повеќе за да разбереш објектно програмирање концептите, после тоа лесно е за да се надоградиш ќе поминеш само работите што се нови во поновите верзии на Јава. Книгава е дефинитивно најдобра ако си почетник. После тоа може да се усовршуваш со книги како Effective Java.


Еве повеќе за head first brain friendly книгите во каков стил се напишани. Screen Shot 2020-05-24 at 13.25.47.png Screen Shot 2020-05-24 at 13.25.55.png
 
Член од
11 јули 2014
Мислења
3.088
Поени од реакции
4.456
Head-First-Java, во книгава се ти е нацртано, и многу лесно се сфаќа и интересна е, се е напишано "brain friendly". Оваа ти е повеќе за да разбереш објектно програмирање концептите, после тоа лесно е за да се надоградиш ќе поминеш само работите што се нови во поновите верзии на Јава. Книгава е дефинитивно најдобра ако си почетник. После тоа може да се усовршуваш со книги како Effective Java.


Еве повеќе за head first brain friendly книгите во каков стил се напишани.Прегледај го приврзокот 252674Прегледај го приврзокот 252675

Еве ја бесплатно во pdf.
 
Член од
5 август 2020
Мислења
89
Поени од реакции
103
Здраво, почнав да учам андроид со јава/котлин и имам едно прашање за поискусните. Што поточно е Context? Многу пати забележав и во туторијалите се пушта како аргумент, ама неможам да ја разберам поентата, кога се пушта и зошто? Избарав и на нет ама не најдов некое јасно објаснување. Фала
 
Член од
9 септември 2018
Мислења
13
Поени од реакции
7
Некој јуниот јава девелопер ?
 
Член од
19 ноември 2020
Мислења
722
Поени од реакции
2.360
нене, за разлика од обични јава класи, records немаат setters туку само се креираат getters, equals, hashCode и toString методите.
Records ќе служат само како data carriers (датата се става само во конструкторот) најчесто за immutable ствари и во некои случаеви како DTOs. Така да Ломбок ќе си живее уште :D
Да не ја тупиме на темата за ит фирми него тука да се префрлиме.

Таман мислев дека ќе се тргне ломбокот и ќе има од самиот програмски јазик. ова си тотално во право дека за ДТО ќе служи. Мене ме интересира дали користиш mapstruct и дали има некоја друга алтернатива ?
@Amaterasu и за тебе прашањето :D
 
Член од
23 септември 2018
Мислења
32
Поени од реакции
26
Да не ја тупиме на темата за ит фирми него тука да се префрлиме.

Таман мислев дека ќе се тргне ломбокот и ќе има од самиот програмски јазик. ова си тотално во право дека за ДТО ќе служи. Мене ме интересира дали користиш mapstruct и дали има некоја друга алтернатива ?
@Amaterasu и за тебе прашањето :D
Хмм неам пробано така али ај баш ќе направам проба со mapstruct па ќе пренесам инфо.
 

Amaterasu

123123113
Член од
17 април 2012
Мислења
1.094
Поени од реакции
985
Да не ја тупиме на темата за ит фирми него тука да се префрлиме.

Таман мислев дека ќе се тргне ломбокот и ќе има од самиот програмски јазик. ова си тотално во право дека за ДТО ќе служи. Мене ме интересира дали користиш mapstruct и дали има некоја друга алтернатива ?
@Amaterasu и за тебе прашањето :D
Не сум користел mapstruct, сега само што го изгуглав и гледам дека е некаков mapper помеѓу различни објекти. Можеби да ни покажеш неколку use-cases, па да го дискутираме usage-от и кој како би го извел истото решение.
Вака на прв поглед, не гледам кој е бенефитот освен ако немаш многу голем број на mappings помеѓу објекти кои се многу слични.
 
Член од
19 ноември 2020
Мислења
722
Поени од реакции
2.360
Не сум користел mapstruct, сега само што го изгуглав и гледам дека е некаков mapper помеѓу различни објекти. Можеби да ни покажеш неколку use-cases, па да го дискутираме usage-от и кој како би го извел истото решение.
Вака на прв поглед, не гледам кој е бенефитот освен ако немаш многу голем број на mappings помеѓу објекти кои се многу слични.
Да не се замараш со куцање мапери на ентитет во дто и обратно од дто во ентиет. Не е многу комплициран ама ме интересира алтернативи и искуство со такви.
 

Amaterasu

123123113
Член од
17 април 2012
Мислења
1.094
Поени од реакции
985
Да не се замараш со куцање мапери на ентитет во дто и обратно од дто во ентиет. Не е многу комплициран ама ме интересира алтернативи и искуство со такви.
Хм, па јас би рекол дека зависи колку "мапери" треба да искуцаш. Ако мапирањето ти е голем дел од проектот, тогаш да, можеби има некој бенефит.
Притоа, гледам дека и со користење на оваа библиотека исто треба да куцаш некаква конфигурација за мапирање.
Јас искрено не би користел вакво нешто од следниве причини:
- Си ја зголемуваш комплексноста на кодот. Секој што ќе работи на domain делот треба да го разбира и mapstruct и да искуца соодветни mappings. Треба да знае дека покрај одржувањето на DTO и ентитетите, ќе мора да ги одржува и mapping класите.
- Добиваш уште една библиотека која ќе треба да ја одржуваш. Upgrades, компатибилност со верзии, па компатибилност помеѓу dependencies кои ги има таа и dependencies на твои други библиотеки (може да зависат од исто dependency, па кревање на верзија некое од нив да ја break-не логиката)
- Гледам дека ова е class generator, така да ако проектот е доволно голем, може да ти влијае на compile/build времето.

А кои се бенефитите? Ќе скратиш нешто на boilerplate код (претпоставувам дека ако DTO-то и ентитетите се исти тогаш конвертирањето работи out of the box). Но, колку често ти се DTO и ентитетите исти? Пример доста нормално е да имаш нешто вакво:
Java:
class CourseDTO {
    private Long id;
    private String name;
    private Long courseTypeId;
}
class Course {
   private Long id;
   private String name;
   private CourseType courseType;
}
Ваквиот mapping (Long -> CourseType) ќе мораш да го направиш рачно. Тука можеш да се судриш и со некои лимитации на билиотеката, па ако сакаш да направиш некој специфичен override, да треба да правиш "хакови".

На крајот, DTO и ентитетите се класи што би требало ретко да се упдејтираат, па времето потрошено на нивно куцање е многу мал процент од целокупниот развој на софтвер.
 
Член од
19 ноември 2020
Мислења
722
Поени од реакции
2.360
Хм, па јас би рекол дека зависи колку "мапери" треба да искуцаш. Ако мапирањето ти е голем дел од проектот, тогаш да, можеби има некој бенефит.
Притоа, гледам дека и со користење на оваа библиотека исто треба да куцаш некаква конфигурација за мапирање.
Јас искрено не би користел вакво нешто од следниве причини:
- Си ја зголемуваш комплексноста на кодот. Секој што ќе работи на domain делот треба да го разбира и mapstruct и да искуца соодветни mappings. Треба да знае дека покрај одржувањето на DTO и ентитетите, ќе мора да ги одржува и mapping класите.
- Добиваш уште една библиотека која ќе треба да ја одржуваш. Upgrades, компатибилност со верзии, па компатибилност помеѓу dependencies кои ги има таа и dependencies на твои други библиотеки (може да зависат од исто dependency, па кревање на верзија некое од нив да ја break-не логиката)
- Гледам дека ова е class generator, така да ако проектот е доволно голем, може да ти влијае на compile/build времето.

А кои се бенефитите? Ќе скратиш нешто на boilerplate код (претпоставувам дека ако DTO-то и ентитетите се исти тогаш конвертирањето работи out of the box). Но, колку често ти се DTO и ентитетите исти? Пример доста нормално е да имаш нешто вакво:
Java:
class CourseDTO {
    private Long id;
    private String name;
    private Long courseTypeId;
}
class Course {
   private Long id;
   private String name;
   private CourseType courseType;
}

Ваквиот mapping (Long -> CourseType) ќе мораш да го направиш рачно. Тука можеш да се судриш и со некои лимитации на билиотеката, па ако сакаш да направиш некој специфичен override, да треба да правиш "хакови".


На крајот, DTO и ентитетите се класи што би требало ретко да се упдејтираат, па времето потрошено на нивно куцање е многу мал процент од целокупниот развој на софтвер.
Една линија код е односна анотација за да се мапира courseTypeId во CourseType. Ама има недостатоци што некогаш читајки ја документацијата за да видам дали не треба да правам "хакови" ќе биде полесно да се рачно искуца отколку да најдам како можам преку мапстракт да го изведам. Друго нешто е што ме боде во очи е пуцање на повеќе од еден селект во база кога може со еден да се реши и се нервирам кога ќе видам таков случај, во овој случај ако правиш Course->CourseDto и притоа место Long courseTypeId ти стои CourseType courseType и ако не ти е пополнет CourseType мапстрактот во позадина при кога ќе се изгенерира со компајлирање имплементацијата на маперот ќе си фино пушти уште еден селект во база за да го изведе мапирањето на CourseType.

Проектот е огромен, правев муабет со другар и рекоа дека кај него од фирма го тргнале mapstruct. Ме интересираше што друго се користи и искуства, пошто примери на интернет за библиокети за мапирање се слични вакви CourseDto и Course и кога почнуваат покомплексни да стануваат работите не врши работа :D
Hibernate го замразив заради примерите на Влад Михаелка или како и да се викаше авторот со Post, Tag и Comment , а во реалноста никој проект така не е едноставен .
 

Емкаа

крофни од драго.
Член од
14 мај 2008
Мислења
4.255
Поени од реакции
10.072
@JaqenH'ghar јас го имам користено MapStruct на поголем проект кај што имавме мапирања на DTO објектите меѓу секој слој на апликацијата.
Шо знам, може дека го работевме екстензивно па немавме поголеми проблеми со него.

За проблемот што го наведее ќе мораш да креираш посебен мапинг за секој објект, шо во суштина има смисла пошо е комплексен објектот. Не ми текнува на некое друго решение, последно пред 3 години го користев.

Мене ми се свиѓаше, посебно ако работиш со архитектури каде мора да мапираш константно.
 
Член од
19 ноември 2020
Мислења
722
Поени од реакции
2.360
@JaqenH'ghar јас го имам користено MapStruct на поголем проект кај што имавме мапирања на DTO објектите меѓу секој слој на апликацијата.
Шо знам, може дека го работевме екстензивно па немавме поголеми проблеми со него.

За проблемот што го наведее ќе мораш да креираш посебен мапинг за секој објект, шо во суштина има смисла пошо е комплексен објектот. Не ми текнува на некое друго решение, последно пред 3 години го користев.

Мене ми се свиѓаше, посебно ако работиш со архитектури каде мора да мапираш константно.
Да знам дека треба посебен и не е проблем тоа. Повеќе ме нервира со пуштањето реквести кон база да се пополни целото дто, доколку ентитетот претходно не му се пополнети сите ентитети што ги содржи. Често знаат да го заборават ова и да не проверат конзола каде имаше случај 100+ квериња пуштени што се решева со еден плус join при select.
Плус некој работи каде што моравме да го кастамизираме пошто ФЕ дечките имаа специфични барања за какви да бидат update dto's. Ме интересираше кои се алтернативите и дали се користат на поголем проект. Вака од интернет на baeldung ќе се најдат, но примерите се ептен едноставни.
 

Amaterasu

123123113
Член од
17 април 2012
Мислења
1.094
Поени од реакции
985
@JaqenH'ghar
Јас мислев дека ова mapstruct само за мапирање на DTO-a се користи, ама го користите и како ORM?
Иначе дај сподели повеќе за тоа што пишал Влад. Тој е hibernate гуру, не верувам дека го хејтал hibernate :D
Иначе јас користам hibernate како ORM (иако на сите проекти го користам преку JPA) и не сум наишол на некои големи performance issues.
Мислам n+1 query проблемот го имаш со сите ORM мапери, ама hibernate/jpa нудат голема флексибилност во начинот на решавање, само треба да го избереш оној што највеќе ти одговара тебе.
 

Kajgana Shop

На врв Bottom