Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA 2.0 encapsulation of @Temporal data types / 11 сообщений из 11, страница 1 из 1
13.11.2012, 13:57:02
    #38036238
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA 2.0 encapsulation of @Temporal data types
Добрый день.

В Java классы java.util.Date, java.util.Calendar, java.sql.Date, java.sql.Time, java.sql.Timestamp являются мутирующими.

По моему опыту работы с JPA 2.0 использовался Calendar с отдельным @Transient гетом чтобы получить Date или что-то иное.

Какие есть best practices для работы с мутирующей датой/временем в @Entity?

Спасибо заранее
Хорошего дня!
...
Рейтинг: 0 / 0
13.11.2012, 14:01:04
    #38036244
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA 2.0 encapsulation of @Temporal data types
dmitriycheПо моему опыту работы с JPA 2.0 использовался Calendar с отдельным @Transient гетом чтобы получить Date или что-то иное.зачем?
...
Рейтинг: 0 / 0
13.11.2012, 14:05:34
    #38036253
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA 2.0 encapsulation of @Temporal data types
grasoff.net,

чтобы не давать прямой доступ к инстансу Сalendar.

У Вас есть алетернативные варианты?
Спасибо за них.
...
Рейтинг: 0 / 0
13.11.2012, 14:11:14
    #38036263
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA 2.0 encapsulation of @Temporal data types
dmitriyche,
чтобы не давать прямой доступ к инстансу Сalendar.
не давайте, в геттере возвращайте новый экземпляр даты.
...
Рейтинг: 0 / 0
13.11.2012, 15:03:59
    #38036368
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA 2.0 encapsulation of @Temporal data types
Внесу немного ясности и приведу пример из моей практики.

Код: 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.
// imports omitted 

@Entity
@Access(AccessType.PROPERTY)
public class MyEntity {
    private Integer id;

    @Access(AccessType.FIELD)
    private Calendar createdAt;

    public MyEntity() {
        createdAt = Calendar.getInstance();
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
        return id;
    }

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

    @Transient
    public Date getCreatedAt() {
        return createdAt.getTime();
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt.setTime(createdAt);
    }

}



Есть ли альтернативы?
Спасибо.
...
Рейтинг: 0 / 0
13.11.2012, 15:06:33
    #38036373
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA 2.0 encapsulation of @Temporal data types
dmitriycheВнесу немного ясности и приведу пример из моей практики.
Ну, и нафиг такое счастье? Клиентскому коду, чаще всего нужен именно Calendar для вычислений. А ORM, в целом, пофиг. Хотя как раз Date иногда рекомендуют использовать для переноса данных. Поэтому что даёт ваш подход не понятно совсем.
...
Рейтинг: 0 / 0
13.11.2012, 15:07:06
    #38036377
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA 2.0 encapsulation of @Temporal data types
dmitriychegrasoff.net,

чтобы не давать прямой доступ к инстансу Сalendar.

У Вас есть алетернативные варианты?
Спасибо за них.так зачем такое вообще? я не понимаю

есть в таблице поле b_date date, и есть класс с полем @Temporal(..) @Column(b_date) Date bDate

и зачем всё, что выше тобой написано?
...
Рейтинг: 0 / 0
13.11.2012, 15:10:05
    #38036382
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA 2.0 encapsulation of @Temporal data types
dmitriycheВнесу немного ясности и приведу пример из моей практики.а что решает этот пример с точки зрения базы в целом?
...
Рейтинг: 0 / 0
13.11.2012, 15:12:26
    #38036388
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA 2.0 encapsulation of @Temporal data types
javapeckerdmitriyche,
чтобы не давать прямой доступ к инстансу Сalendar.
не давайте, в геттере возвращайте новый экземпляр даты.
+1
Есть ещё масса вариантов. Можно унести часть логики работы с датой из внешнего кода в этот класс. И возвращать только конкретные значения, нужные для внешней логики.
...
Рейтинг: 0 / 0
13.11.2012, 15:35:59
    #38036447
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA 2.0 encapsulation of @Temporal data types
grasoff.netdmitriycheВнесу немного ясности и приведу пример из моей практики.а что решает этот пример с точки зрения базы в целом?

Точка зрения базы данных в данном вопросе не рассматривается.
...
Рейтинг: 0 / 0
13.11.2012, 15:38:15
    #38036451
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA 2.0 encapsulation of @Temporal data types
Blazkowicz...
Есть ещё масса вариантов. Можно унести часть логики работы с датой из внешнего кода в этот класс. И возвращать только конкретные значения, нужные для внешней логики.

Предположим, что в данный момент ещё неизвестно какая логика работы с датой будет применена для с данным классом.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA 2.0 encapsulation of @Temporal data types / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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