Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как оптимизировать код / 12 сообщений из 12, страница 1 из 1
16.08.2012, 22:52:42
    #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
16.08.2012, 23:07:33
    #37920187
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимизировать код
On 16.08.2012 23:52, Core12 wrote:

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

Привязка параметров по имени (вместо порядка) не поможет?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.08.2012, 23:17:59
    #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
16.08.2012, 23:39:10
    #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
17.08.2012, 10:37:00
    #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
17.08.2012, 10:39:25
    #37920435
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимизировать код
В Apache Commons DBUtils был простейший маппер объектов на JDBC. Посмотрите доку и примеры.
...
Рейтинг: 0 / 0
17.08.2012, 11:49:20
    #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
17.08.2012, 11:56:05
    #37920563
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимизировать код
Core12Править это процедуру я не могу
а написать сверху обёртку прямо в БД тоже не можете или не хотите?
Код: java
1.
procedure AaaaaExt(парам)
...
Рейтинг: 0 / 0
18.08.2012, 11:31:28
    #37921560
Core12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимизировать код
Petro123Core12Править это процедуру я не могу
а написать сверху обёртку прямо в БД тоже не можете или не хотите?
Код: java
1.
procedure AaaaaExt(парам)


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


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