powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring IoC, DAO и синглтон
21 сообщений из 46, страница 2 из 2
Spring IoC, DAO и синглтон
    #37734570
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmBlazkowicz, я нагуглил статью 2004 года.
Сайт хороший. Там про транзакции в Spring отличная статья. Но вам бы я рекомендовал reference читать по свежим версиям. Он на столько подробный сто статьи особо не нужны.

rdmСобственно не понял как синглтон без состояния может безопасно использоваться разными потоками, ну да ладно) главное работает)
Ответственность лежит на девелопере. Точно так же как у сервлетов. Поля лучше не использовать, без соответствующей синхронизации.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734578
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё Flash Scope просили глобально добавить. Но вроде только в web сделали.
https://jira.springsource.org/browse/SPR-6464
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734583
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, они ту статью с сайта ibm скопировали) Если вы эту имеете в виду
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Spring IoC, DAO и синглтон
    #38537586
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123silvan,
ну да. Надо аффтару привести более конкретный код с ПРОБЛЕМОЙ.
imho
в вопросе намешаны несколько вопросов. Потокобезопасные объекты\сингелетоны\DAO\Хибер.
Каждый элемент можно написать потокоустойчивым и нет. Безотносительно DI.

Хороший вопрос . Хочется для себя прочснить раз и навсегда как же все это работает в описаных вариантах



Раскройте пожалуйста про потокобезопасные объекты/синглетоны /dao/хибер




Верно чтов спринге у управляемого контейнером компонента вообще не должно быть в полях класса ссылок на объекты с изменяемым состоянием. Все такие объекты должны создаваться и использоваться как локальные переменные методов. Это действительно защищает от ошибок, но очень напоминает процедурное программирование.

Тогда даже при моделе спринга с одним экземплярлм класса два потока одновременно исполяя один и тот же метод буду иметь каждый свой набор локальных переменных данного метода.Фактически это своя копия тела метода?!

Это же верно и для метода с ключевым словом static !?
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38537599
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1 Верно чтов спринге у управляемого контейнером компонента вообще не должно быть в полях класса ссылок на объекты с изменяемым состоянием.

Нет, не верно. Сильно зависит от Scope. Так же надо понимать как именно состояние используется разными потоками, если речь о многопоточном сервере.

Atum1 Все такие объекты должны создаваться и использоваться как локальные переменные методов.

Какие "такие"?

Atum1Это действительно защищает от ошибок, но очень напоминает процедурное программирование.

Темы OOP и хранения состояния слабо связаны. Кажется что вы нащупали проблему Anemic Domain Model, но не можете её осознать.
Постарайтесь обнаружить более точные критерии, что именно вас напрягает в коде. И сформулировать это конкретными терминами, а не "кажется", "похоже" и "возможно".
Про Anemic Model первым начал писать Фаулер. Много интересного можно подчерпнуть и на rsdn.ru в форуме Архитектуры по этой теме.

Atum1Тогда даже при моделе спринга с одним экземплярлм класса два потока одновременно исполяя один и тот же метод буду иметь каждый свой набор локальных переменных данного метода.Фактически это своя копия тела метода?!

Ну, что значит "своя копия". Есть локальные переменные. Они хранятся на стэке. У каждого потока свой стэк.

Atum1Это же верно и для метода с ключевым словом static !?
Это всё немного паралельно вопросу static.

Мысли все в верном направлении, но стоит ознакомиться с терминологией и более конкретно задавать вопросы.
Anemic Model, coupling, cohesion это первое с чем бы я порекомендовал разобраться. После этого можно будет говорить уже более предметно.
Ну, и можно было новую тему создавать, а не некропостить.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38537628
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1, я бы ответил, что можно использовать один объект, если использующие его методы не изменяют его.
Например в классе @Service можно использовать простое поле private String blabla если методы не будут его менять, а только читать.
Присвоить ему значение можно в методе @PostConstruct.
Например библиотеки логгирования, добавляется одно поле (private static final Logger log) на весь класс и используется всеми метода сервиса сразу.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38537640
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1но очень напоминает процедурное программирование.
смотри шире.
Модель веб - публичный сервер-код для много-много клиентов.
Для упрощения масштабирования и чтобы он не падал, вводится контейнер и много-много потоков.
Значит куски кода должны быть слабосвязаны между собой.
Что мы и наблюдаем - а ля процедурное программирование.
Все связи между классами и временем жизни заменяют конфиги и DI.
.....
В десктопе (клиент-сервере) совершенно всё наоборот т.к. нет предпосылки выше.
Так что imho лучше знать оба метода кодирования). Т.е. синглтон не забывать)))
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38537652
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 ,
Ничего не понял :-) Каким образом наличие контейнера и "многих потоков" может сделать так, что бы "он не падал"? К отказоустойчивости это вообще никакого отношения не имеет. И Спринг так же ни к отказоустойчивости, ни к масштабируемости не имеет ровно никакого отношения.
Спринг - это просто удобный способ проставить зависимости между объектами. Так же, он никак не реламентирует, может ли у объекта быть состояние или нет. Хотите - делайте состояние. Не хотите - делайте stateless. Хотите - делайте синглтон, хотите - много инстансов. Спринг никак не подталкивает вас к тому или иному решению по дизайну.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38537655
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv,
- "не падал" значит - сервер откликается на запросы. Это обеспечивает контейнер за счёт потоков.
Логично?
- я про отказоустойчивость не говорил. И про спринг не говорил. Я говорил про синглтон. Вы его давно писали?
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38537795
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Ок! тогда по порядку на простых примерах и так есть обычный такой servlet

в него делаем

@Injection
private MyClass myClass;


( если просто создать private MyClass myClass = new MyClass() - то это будет .... что это будет ?! к примеру потоко незащищенный , разделяемый всеми тредами -> всеми пользователями некоторый ресурс )
- опять очень большая абстракция.

Пусть MyClass

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public MyClass {
public final String counter;
public String index;


MyClass(){} 

public  String doSomething(String param){

String result = null;
.... // что то делаем
return result;
}

public static String doSomethingStatic(String param){

String result = null;
.... // что то делаем
return result;
}


}


в сервлете в doGet()

идет вызов методов doSomethingStatic и doSomething

если в методах мы не используем значения полей класса MyClass - то при передаче параметра мы для каждого потока должны получить свое значение -

ситуации когда один пользователь послал параметр а получил значение которое должен был получить второй пользователь - в такой ситуации невозможна ?! так ??? почему так ? потому что для каждого вызова - свой стек и свой набор переменных ?!.

теперь добавляем в тело методом - операции с переменной класса counter ? и вот тут начинается .... что начинается?
Как с этим бороться ?
как этого избежать ....
( synchronized ? cas ? )

Это первая часть вопроса ...


вторая будет уже по технологии и по спрингу - вот у нас есть
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
@Service
public class CompanyServiceImpl implements CompanyService {

    @Autowired
    private SessionFactory sessionFactory;


    @Override
    @Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
    public List<Company> getCompanys() {
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        
        Query  query = session.createQuery("SELECT c FROM Company");
        query.setCacheable(true);
        List<Company> result =  query.list();

        session.close();
        session = null;
        
        return result;
    }   



создали private SessionFactory sessionFactory; - каким образом он создается , он будет один ? что из себя будет представлять ?

далее вопрос - как влияет на код @Transactional если ее не будет.

а если мы будем вызывать процедуру то вопросы те же... про одновременный вызов двух пользователей. получит один из них мусор или нет.

(мой ответ получит мусор , без аннотации , проверил )... почему пришел мусор?
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38537796
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,

Процедуру я имел ввиду вызов некой процедуры в базе данных
call ? allCompany (?,?)
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38537802
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю секрет в ThreadLocal context )
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38537806
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38537817
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdm,
о спасибо, напомнили про ThreadLocal - насколько я помню - он нужен в тех случаях когда нужно чтобы у потока был свой экземпляр переменной.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38537900
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1он нужен в тех случаях когда нужно чтобы у потока был свой экземпляр переменной
это всегда нужно при работе с потоками. Так сказать обратная сторона медали наших замечательных потоков. (был тут топик на эту тему)
Atum1(мой ответ получит мусор , без аннотации , проверил )... почему пришел мусор?
где мусор?
Приведи минимальный код с этим мусором.
ЗЫ. Если говорить про объект сессии хибера, то он потокобезопасен. Уж так написан.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38538115
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1 ,
У вас как-то в кучу все смешалось :-) Хотите понять многопоточность - задавайте конкретные вопросы по многопоточности, поможем.
Хотите понять сколько инстансов того или бина будет создано, что такое Transactional, и т.д. - документация вам в помощь. Почитали, попробовали, что-то поняли, что-то не поняли. Что не поняли - спросили.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38539420
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123- "не падал" значит - сервер откликается на запросы. Это обеспечивает контейнер за счёт потоков.
Логично?Ни разу.
То, что контейнер "прячет многопоточность" ни разу не мешает создавать кривой код. У нас был живой пример. Но NDA. Но был.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38539480
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Если ты про руки программиста, то я не о них.
Я о депрекатед однопоточной модели в сервлет 2.4 вроде.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38539504
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Если ты про руки программиста, то я не о нихА я - о них. Можно выдать на гора вполне работоспособный на стенде код, который вообще не пригоден к реальной жизни.Я о депрекатед однопоточной модели в сервлет 2.4 вроде.Ну была возможность декларативно аннулировать многопоточность. Потом подумали, что смысла - ноль и возможность отменили. И что?
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38539559
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
а смотри ниже ...очень тонкий юмор:
авторВ какой-то момент в Sun сочли такой подход неудачным. В самом деле, гораздо эффективнее отдать синхронизацию разработчику. Он во всяком случае знает, какие блоки действительно нужно синхронизировать
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #38539656
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в чём юмор?
...
Рейтинг: 0 / 0
21 сообщений из 46, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring IoC, DAO и синглтон
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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