Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / использование DAO в сервлете / 22 сообщений из 22, страница 1 из 1
12.11.2015, 16:31
    #39102038
goldenhawk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
Если делать веб приложение при помощи сервлетов, не используя спринг.
1)Тогда надо создавать класс PersonDAO или интерфейс PersonDAO и реализацию класс PersonDAOImpl ?
2)Методы в PersonDAO должны быть статическими? к примеру чтобы в сервлете не писать new PersonDAO (), а писать к примеру PersonDAO.add(person).
Но если делать статические методы, то не получится сделать интерфейс со статическими методами.

Как тогда нужно реализовывать ?
...
Рейтинг: 0 / 0
12.11.2015, 16:39
    #39102054
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
DAO немного устаревший паттерн. Так как с ORM нахрен не надо писать разные методы для разных типов. Поэтому на смену DAO приходит Repository.
Статические методы, в целом, ни к чему хорошему не приводят.
Ваш вопрос "Как тогда нужно реализовывать?" приводит к тому что вы понятия не имеете что такое жизненый цикл объектов. Spring IoC именно этим и занимается. Отказавшись от него вы хотите то же самое, но без Spring. Можете использовать JEE CDI.

Определитесь со стеком технологий и найдите в интернете пример их использования вместе. Pet Store какой-нибудь.

Когда мне хочется чего-нибудь lightweight без Spring, я просто пишу отдельный класс, который делает все инъекции. Эдакий IoC DI контейнер. Но дружить его с сервлетами не очень удобно, потому что сервлеты это не POJO.
...
Рейтинг: 0 / 0
12.11.2015, 16:50
    #39102063
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
goldenhawkКак тогда нужно реализовывать ?
Код: 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.
package dao;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Customer {
	@Id
	@Column(name = "id")
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;
	@Column(nullable = false)
	private String Name;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getName() {
		return Name;
	}

	public void setName(String name) {
		Name = name;
	}
}


в сервлете
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
		try {
			System.out.println("Создать класс-запись в БД");
			Main u = new Main();
			u.setPassword("abc123");
			session.saveOrUpdate(u);
			System.out.println("Сохранили в БД класс без коммита");
		} finally {
			HibernateUtil.commitTransaction();
			System.out.println("Коммит прошёл. Всё");
		}
...
Рейтинг: 0 / 0
12.11.2015, 16:57
    #39102076
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
Petro123,

Entity это не DAO.
...
Рейтинг: 0 / 0
12.11.2015, 17:06
    #39102084
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
BlazkowiczEntity это не DAO.
не будем уточнять формулировки.
Согласись что 1-ый класс вторая четверть ОРМа начинается с этого.
А про второй класс аффтар вроде и не спрашивает.
...
Рейтинг: 0 / 0
12.11.2015, 17:07
    #39102086
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
Blazkowicz,
ну, то есть ещё проще для понимания основ в Java у меня не вышло))) LOL
...
Рейтинг: 0 / 0
12.11.2015, 17:25
    #39102115
goldenhawk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
нужно на сервлетах реализовать взаимодействие с БД при помощи jdbc , не используя spring, hibernate.
Если я создам класс PersonDAO с методами addPerson,updatePerson,findPerson , то как мне вызывать их в севлете ?
new PersonDAO().addPerson ? иили лучше сделать статический метод addPerson , чтобы не созавать эти объекты PersonDAO ?
...
Рейтинг: 0 / 0
12.11.2015, 17:28
    #39102123
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
goldenhawkнужно на сервлетах реализовать взаимодействие с БД при помощи jdbc , не используя spring, hibernate.
Если я создам класс PersonDAO с методами addPerson,updatePerson,findPerson , то как мне вызывать их в севлете ?
new PersonDAO().addPerson ? иили лучше сделать статический метод addPerson , чтобы не созавать эти объекты PersonDAO ?

Singleton спешит на помощь.
Код: java
1.
2.
PersonDAO dao = PersonDAO.getInstance();
dao.addPerson();
...
Рейтинг: 0 / 0
12.11.2015, 17:35
    #39102133
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
goldenhawkпри помощи jdbc
а раньше молчал?)) Может тебе и классы не нужны?
Код: java
1.
update Person set возраст=16
...
Рейтинг: 0 / 0
12.11.2015, 17:47
    #39102157
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
goldenhawk,
без хибера или другой ОРМ ты с классами на jdbc затрахаешься.
- бери DataSet или SQL
Удачи!
...
Рейтинг: 0 / 0
12.11.2015, 17:50
    #39102163
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
Petro123goldenhawk,
без хибера или другой ОРМ ты с классами на jdbc затрахаешься.
- бери DataSet или SQL
Удачи!
Чтобы не затрахаться с JDBC есть Apache Commons DBUtils.
Ну, и, как вариант, jOOQ/QueryDSL
Но, мысль поддерживаю. Даже на небольшом проекте в менее чем десяток таблиц я начал скучать за хибером.
...
Рейтинг: 0 / 0
12.11.2015, 18:04
    #39102198
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
Blazkowicz,
да.
Ну, и ещё вариант, если у него ангуляр и т.д.
Тогда с клиентом всё на JSON.
А с него возможно прямо UPDATE SQL и писать (тож без объектов).
...
Рейтинг: 0 / 0
12.11.2015, 18:06
    #39102203
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
Petro123,

Ну, это хорошо забытое старое. К черту сервлеты! JSP наше фсё!
https://docs.oracle.com/javaee/5/tutorial/doc/bnald.html
...
Рейтинг: 0 / 0
12.11.2015, 18:21
    #39102230
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
BlazkowiczPetro123,
Ну, это хорошо забытое старое. К черту сервлеты! JSP наше фсё!
https://docs.oracle.com/javaee/5/tutorial/doc/bnald.html
о да!! )))
5 баллов.
Удачи аффтару!
...
Рейтинг: 0 / 0
13.11.2015, 10:28
    #39102681
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
goldenhawkнужно на сервлетах реализовать взаимодействие с БД при помощи jdbc
Ну как при помощи jdbc отправляете запрос к СУБД. Получаете RowSet. Пробегаетесь по нему.
Парсите. Создаете свое DAO. Ну например самое простейшее с Map values и все поля из Rowset в нем. Геттеры Сеттеры, как совесть позволяет. Ну продумываете как ключ генериться будет. Как связи с другими DAO реализовать. Кеш. Ну и операцию store. Потом про то, как транзакциями рулить. И все.
...
Рейтинг: 0 / 0
13.11.2015, 18:53
    #39103206
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
BlazkowiczPetro123goldenhawk,
без хибера или другой ОРМ ты с классами на jdbc затрахаешься.
- бери DataSet или SQL
Удачи!
Чтобы не затрахаться с JDBC есть Apache Commons DBUtils.
Ну, и, как вариант, jOOQ/QueryDSL
Но, мысль поддерживаю. Даже на небольшом проекте в менее чем десяток таблиц я начал скучать за хибером.
А как на счет использования iBatis в таких случаях?
...
Рейтинг: 0 / 0
14.11.2015, 11:59
    #39103373
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
just_vladimir,
Я смотрю, у вас настолько много там недосказанного, что делать обзор всего и вся глупо. Позови программиста. Он расскажет что умеет и что хочет.
Imho
...
Рейтинг: 0 / 0
14.11.2015, 15:52
    #39103493
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
Petro123,
у меня? Вы о чем? Я не ТС, просто предложил, что если надо делать crud и не хочется хибернейтов, а хочется писать sql самостоятельно, то iBatis это неплохой вариант.
...
Рейтинг: 0 / 0
14.11.2015, 16:26
    #39103512
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
just_vladimir,
упс, извини. Думал что ты ТС....
Конечно вариант. Только ТС молчит. Вероятно тема закрыта.
...
Рейтинг: 0 / 0
15.11.2015, 16:58
    #39103854
detec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
Если не использовать Spring для Dependency Injection, то нужно тогда использовать Java EE технологию CDI. Аннотация @Inject, создавать PersonDAO и т.п., инджектить его в сервисный слой. Статических методов при этом делать не нужно.
...
Рейтинг: 0 / 0
16.11.2015, 12:21
    #39104309
olegeos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
EJB?
...
Рейтинг: 0 / 0
16.11.2015, 13:01
    #39104367
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование DAO в сервлете
а что? Если написать на чём нибудь с буквой E_XXXXX вначале, то код выше станет меньше и проще?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / использование DAO в сервлете / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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