@jvmchat

Страница 78 из 2890
Igor
29.03.2016
19:38:04
так там круд с ними

Митко Соловец?
29.03.2016
19:38:10
но то круд

а ты говоришь сотни объектов

Igor
29.03.2016
19:38:16
логика вся в джаве

Google
Митко Соловец?
29.03.2016
19:38:20
это батч апдейт

это ты имеешь в виду?

Igor
29.03.2016
19:38:29
не совсем

объекты процессятся по очереди

ну смотри http://www.nowystyl.ru/products/office-chairs-ru/PILOT

Митко Соловец?
29.03.2016
19:38:44
вот допустим хочу кресло добавить

Igor
29.03.2016
19:38:52
вот я из него выгребаю все

материал в отдельную таблицу

Митко Соловец?
29.03.2016
19:39:01
парсишь?

Igor
29.03.2016
19:39:04
тип материала

да

Митко Соловец?
29.03.2016
19:39:11
такой ты шалун???

а я думал сам все собираешь)

Google
Igor
29.03.2016
19:39:35
так кресла прямо эти и продаем, смысл руками их вбивать)

ну короче, сохраняется отсюда материал, тип материала, отдельно сет материалов

и сам продукт

таких кресел за 1 раз 50 апдейтится

конкретно в этом случае я обновляться вряд ли чаще чем раз в полгода буду

но просто юзкейс интересен, как лучше, если это часто

Митко Соловец?
29.03.2016
19:41:24
@Transactional public void bulkUpdatePrice(String path, Integer sheetNumber) throws IOException { int i=0; for (T t : getAll()) { ExcelDocument document = ExcelDocument.getInstance(path); parser.readFromExcel(t, document, sheetNumber); Session session = entityManager.unwrap(Session.class); session.merge(t); logger.info("Update price for " + t.getName() + ": " + t.getPrice()); i++; if (i % 20 == 0) { session.flush(); session.clear(); } } }

у меня вот так)

самый распространенный и рекомендуемый способ

Igor
29.03.2016
19:42:05
но у тебя док больше ни от чего не зависит

а у меня все между собой зависят

Митко Соловец?
29.03.2016
19:42:24
да я к тому, что просто каждые 20 айтемов делаю флуш в базу

ну и плюс там пропертя у хибера прописана

Igor
29.03.2016
19:43:04
а на выходе он сам флаш не сделает?

Митко Соловец?
29.03.2016
19:43:14
у него будет аут оф мемори

угадай почему)

кстати, вопрос уровня джуниора

Igor
29.03.2016
19:43:35
ну если дохерища объектов, то да

Митко Соловец?
29.03.2016
19:43:50
да, хибернетовская поделка просто все кэширует

поэтому жепа

Google
Igor
29.03.2016
19:44:35
у меня вроде в разумных пределах)

Митко Соловец?
29.03.2016
19:45:08
ну явно не стоит 100 объектов загонять в память)

или флушить каждый из них

Igor
29.03.2016
19:45:23
мне все равно их доставать потом

пока точно не буду заморачиваться, но в целом понятно, что так лучше не делать)

интересно, а в монге такого вообще нету? сразу в базу пишется?

Митко Соловец?
29.03.2016
19:57:42
вот

по поводу монги

забыл тебе сказать, что стандартный монго репозитори и приложения

поддерживает гибридные сущности

жпа+монго

Igor
29.03.2016
20:00:54
что-то не могу ничего нагуглить по этому поводу

Митко Соловец?
29.03.2016
20:01:01
не надо гуглить

иди сразу в референс документацию

по этйо части

Igor
29.03.2016
20:01:18
спрингдаты?

Митко Соловец?
29.03.2016
20:01:25
ЙЕС

http://docs.spring.io/spring-data/mongodb/docs/1.2.x/reference/html/mongo.cross.store.html

@Entity public class Customer { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String firstName; private String lastName; @RelatedDocument private SurveyInfo surveyInfo; // getters and setters omitted }

божественно

Google
Митко Соловец?
29.03.2016
20:03:53
public class SurveyInfo { private Map<String, String> questionsAndAnswers; public SurveyInfo() { this.questionsAndAnswers = new HashMap<String, String?); } public SurveyInfo(Map<String, String> questionsAndAnswers) { this.questionsAndAnswers = questionsAndAnswers; } public Map<String, String> getQuestionsAndAnswers() { return questionsAndAnswers; } public void setQuestionsAndAnswers(Map<String, String> questionsAndAnswers) { this.questionsAndAnswers = questionsAndAnswers; } public SurveyInfo addQuestionAndAnswer(String question, String answer) { this.questionsAndAnswers.put(question, answer); return this; } }

мне кажется это то, что ты ищешь)

Igor
29.03.2016
20:04:10
ага, вижу уже

круто

спасибо :)

Митко Соловец?
29.03.2016
20:04:18
Customer customer = new Customer(); customer.setFirstName("Sven"); customer.setLastName("Olafsen"); SurveyInfo surveyInfo = new SurveyInfo() .addQuestionAndAnswer("age", "22") .addQuestionAndAnswer("married", "Yes") .addQuestionAndAnswer("citizenship", "Norwegian"); customer.setSurveyInfo(surveyInfo); customerRepository.save(customer);

Igor
29.03.2016
20:04:54
и монгорепозиторий вообще не нужен тогда, как я понимаю?

Митко Соловец?
29.03.2016
20:05:21
ну я так понимаю нет

Igor
29.03.2016
20:05:32
ща протесчу :)

Admin
ERROR: S client not available

Митко Соловец?
29.03.2016
20:05:38
т.к. весь круд у тебя в джейпиэй репе будет

Igor
29.03.2016
20:05:41
ага

Митко Соловец?
29.03.2016
20:05:48
Customer customer = new Customer(); customer.setFirstName("Sven"); customer.setLastName("Olafsen"); SurveyInfo surveyInfo = new SurveyInfo() .addQuestionAndAnswer("age", "22") .addQuestionAndAnswer("married", "Yes") .addQuestionAndAnswer("citizenship", "Norwegian"); customer.setSurveyInfo(surveyInfo); customerRepository.save(customer);

главное не забудь бин дефинишины для монги

кстати, вот еще вопрос к тебе

помнишь ты про ажур спрашивал?

Igor
29.03.2016
20:06:27
что конкретно?)

Митко Соловец?
29.03.2016
20:06:40
типо как тебе юзать AzurService

Igor
29.03.2016
20:06:44
ага

Google
Митко Соловец?
29.03.2016
20:06:53
ты мог сделать так

@Bean public AzureService getAzureService() {return new AzureService(); }

а потом

@Autowired AzureService azureService;

и никаких оберток

Igor
29.03.2016
20:08:07
он только в одном сервисе юзается

Митко Соловец?
29.03.2016
20:08:20
?

Igor
29.03.2016
20:08:21
так что сделал просто приватным и инициализацию в PostConstruct

Митко Соловец?
29.03.2016
20:08:41
пост констракт сервиса?

Igor
29.03.2016
20:08:44
ага

Митко Соловец?
29.03.2016
20:08:45
и никаких аннотаций?

Igor
29.03.2016
20:08:51
да

Митко Соловец?
29.03.2016
20:09:04
ну как вариант кстати

Igor
29.03.2016
20:09:15
private CloudBlobContainer container; @PostConstruct private void init() { try { CloudStorageAccount account = CloudStorageAccount.parse(CONNECTION_STRING); CloudBlobClient client = account.createCloudBlobClient(); container = client.getContainerReference(ROOT_FOLDER); } catch (URISyntaxException | InvalidKeyException | StorageException e) { e.printStackTrace(); } }

т.е. вот так

ну контейнер - тот самый объект, который везде нужен

Митко Соловец?
29.03.2016
20:09:43
e.printStackTrace();

?

Igor
29.03.2016
20:09:50
упс)

из тестового проекта переносил

Митко Соловец?
29.03.2016
20:09:59
они обидятся)

Страница 78 из 2890