powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как оптимизировать код
12 сообщений из 12, страница 1 из 1
Как оптимизировать код
    #37920177
Core12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Столкнулся с такой проблемой, а точнее мои размышления зашли в тупик.
Есть веб сервис, который принимает некие параметры из soap запроса.
Потом берет эти параметры и передает в хранимую процедуру на оракле.
Дело в том, что эта процедура сделана через анальное отверстие Ктулху и имеет кучу параметров, а именно 83(да именно восемьдесят три параметра). Править это процедуру я не могу, поэтому решение лежит в исправлении ява кода.
Сейчас это выглядит вот так.
Код: java
1.
2.
3.
4.
5.
      cstmt.setString(1, name);     // Set Product Name.
      cstmt.setString(2, desc);     // Set Product Description.
      cstmt.setFloat(3, listprice);   // Set Product ListPrice.
      ..........
      cstmt.setFloat(83", minprice);     // Set Product MinPrice.



Учитывая, что таких параметров очень много в одном методе, код стал абсолютно не читаемым.

Хотелось бы узнать мнение экспертов, о том как эти конструкции можно оптимизировать и вернуть коду его нормальное состояние.
...
Рейтинг: 0 / 0
Как оптимизировать код
    #37920187
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 16.08.2012 23:52, Core12 wrote:

> Учитывая, что таких параметров очень много в одном методе, код стал абсолютно не читаемым.

Привязка параметров по имени (вместо порядка) не поможет?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как оптимизировать код
    #37920190
Core12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis PopovOn 16.08.2012 23:52, Core12 wrote:

> Учитывая, что таких параметров очень много в одном методе, код стал абсолютно не читаемым.

Привязка параметров по имени (вместо порядка) не поможет?


Не очень понял, что вы имеете ввиду.
Вместо
Код: java
1.
cstmt.setString(1, name); 


Делать
Код: java
1.
cstmt.setString("param_name", name); 


Я правильно вас понял?
...
Рейтинг: 0 / 0
Как оптимизировать код
    #37920203
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 17.08.2012 00:17, Core12 wrote:

> Я правильно вас понял?

Правильно, только в случае Оракла потребуется использовать методы setXXXAtName() классов, а не интерфейсов:

http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#06_03


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как оптимизировать код
    #37920431
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Core12Делать
Код: java
1.
cstmt.setString("param_name", name); 



Я правильно вас понял?ну ещё циферки (индекс параметра - 1, 2, 3, 4, ..., 83) можно заменить на "константы":
private static final int PARAM_NAME = 1;
private static final int PARAM_DESC = 2;
...
private static final int PARAM_MIN_PRICE = 83;
...
Рейтинг: 0 / 0
Как оптимизировать код
    #37920435
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Apache Commons DBUtils был простейший маппер объектов на JDBC. Посмотрите доку и примеры.
...
Рейтинг: 0 / 0
Как оптимизировать код
    #37920550
OOsalivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Core12Всем привет.
Столкнулся с такой проблемой, а точнее мои размышления зашли в тупик.
Есть веб сервис, который принимает некие параметры из soap запроса.
Потом берет эти параметры и передает в хранимую процедуру на оракле.
Дело в том, что эта процедура сделана через анальное отверстие Ктулху и имеет кучу параметров, а именно 83(да именно восемьдесят три параметра). Править это процедуру я не могу, поэтому решение лежит в исправлении ява кода.
Сейчас это выглядит вот так.
Код: java
1.
2.
3.
4.
5.
      cstmt.setString(1, name);     // Set Product Name.
      cstmt.setString(2, desc);     // Set Product Description.
      cstmt.setFloat(3, listprice);   // Set Product ListPrice.
      ..........
      cstmt.setFloat(83", minprice);     // Set Product MinPrice.



Учитывая, что таких параметров очень много в одном методе, код стал абсолютно не читаемым.

Хотелось бы узнать мнение экспертов, о том как эти конструкции можно оптимизировать и вернуть коду его нормальное состояние.

Код: 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.
final class PreparedStatementFacade {
	
	private final PreparedStatement ps;
	
	private final List<Integer> reqaredParam = Arrays.asList(1,2,3,20);
	
	public PreparedStatementFacade(PreparedStatement ps) {
		this.ps = ps;
	}

	/**
	 * Set Product Name
	 * @param name
	 * @throws SQLException
	 */
	public void setName(String name) throws SQLException {
		ps.setString(1, name);
		reqaredParam.remove(1);
	}
	
	/**
	 * Set Product Description.
	 * @param description
	 * @throws SQLException
	 */
	public void setDescription(String description) throws SQLException {
		ps.setString(2, description);
		reqaredParam.remove(2);
	}
	
	private void validate() {
		if (reqaredParam.size()>0) {
			throw new IllegalArgumentException(reqaredParam.toString() + " must be set");
		}
	}
	
	public boolean execute() throws SQLException {
		validate();
		return ps.execute();
	}
	
}
...
Рейтинг: 0 / 0
Как оптимизировать код
    #37920563
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Core12Править это процедуру я не могу
а написать сверху обёртку прямо в БД тоже не можете или не хотите?
Код: java
1.
procedure AaaaaExt(парам)
...
Рейтинг: 0 / 0
Как оптимизировать код
    #37921560
Core12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Core12Править это процедуру я не могу
а написать сверху обёртку прямо в БД тоже не можете или не хотите?
Код: java
1.
procedure AaaaaExt(парам)


Не могу, но разговор о исправлении хранимых процедур уже был, так что там будет меняться все и они в первую очередь.э
За советы спасибо.
...
Рейтинг: 0 / 0
Как оптимизировать код
    #37921659
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Core12,
ну тогда городить оверхед на стороне Java вместо рефакторинга - изврат IMHO
...
Рейтинг: 0 / 0
Как оптимизировать код
    #37921852
Core12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Core12,
ну тогда городить оверхед на стороне Java вместо рефакторинга - изврат IMHO
Я с вами полностью согласен, гораздо проще вычисить sql код.
Потому что если на него посмотреть, там есть очень много на мой взгляд бесполезных методов.
Так что надо ждать разраба sql и спрашивать его, что это за фигня.
...
Рейтинг: 0 / 0
Как оптимизировать код
    #37921853
Core12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а что такое оверхед ?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как оптимизировать код
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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