Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate анотации 
:(
    Опции темы
4epT
Дата 12.12.2010, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



Добрый день! Установил новый нетбинс, нашел там интересную "кнопку" которая генерирует java entity по указанной БД ... и проставляет все аннотации. Можете сказать правильно ли он их проставил ?) 

вот к примеру таблица Users:
Код

@Entity
@Table(name = "users", catalog = "st", schema = "", uniqueConstraints = {
    @UniqueConstraint(columnNames = {"id"}),
    @UniqueConstraint(columnNames = {"login"})})
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Users.findAll", query = "SELECT u FROM Users u"),
    @NamedQuery(name = "Users.findById", query = "SELECT u FROM Users u WHERE u.id = :id"),
    @NamedQuery(name = "Users.findByLogin", query = "SELECT u FROM Users u WHERE u.login = :login"),
    @NamedQuery(name = "Users.findByPassword", query = "SELECT u FROM Users u WHERE u.password = :password"),
    @NamedQuery(name = "Users.findByIdRole", query = "SELECT u FROM Users u WHERE u.idRole = :idRole"),
    @NamedQuery(name = "Users.findByIdGroup", query = "SELECT u FROM Users u WHERE u.idGroup = :idGroup"),
    @NamedQuery(name = "Users.findByIdSpecialty", query = "SELECT u FROM Users u WHERE u.idSpecialty = :idSpecialty"),
    @NamedQuery(name = "Users.findByIdChair", query = "SELECT u FROM Users u WHERE u.idChair = :idChair"),
    @NamedQuery(name = "Users.findByIdFaculty", query = "SELECT u FROM Users u WHERE u.idFaculty = :idFaculty"),
    @NamedQuery(name = "Users.findByBirthday", query = "SELECT u FROM Users u WHERE u.birthday = :birthday"),
    @NamedQuery(name = "Users.findByIdCountry", query = "SELECT u FROM Users u WHERE u.idCountry = :idCountry"),
    @NamedQuery(name = "Users.findByIdCity", query = "SELECT u FROM Users u WHERE u.idCity = :idCity"),
    @NamedQuery(name = "Users.findByEmail", query = "SELECT u FROM Users u WHERE u.email = :email"),
    @NamedQuery(name = "Users.findBySurname", query = "SELECT u FROM Users u WHERE u.surname = :surname"),
    @NamedQuery(name = "Users.findByName", query = "SELECT u FROM Users u WHERE u.name = :name")})
public class Users implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id", nullable = false)
    private Integer id;
    @Column(name = "login", length = 45)
    private String login;
    @Column(name = "password", length = 40)
    private String password;
    @Column(name = "idRole")
    private Integer idRole;
    @Column(name = "idGroup")
    private Integer idGroup;
    @Column(name = "idSpecialty")
    private Integer idSpecialty;
    @Column(name = "idChair")
    private Integer idChair;
    @Column(name = "idFaculty")
    private Integer idFaculty;
    @Column(name = "birthday")
    @Temporal(TemporalType.TIMESTAMP)
    private Date birthday;
    @Column(name = "idCountry")
    private Integer idCountry;
    @Column(name = "idCity")
    private Integer idCity;
    @Column(name = "email", length = 45)
    private String email;
    @Column(name = "surname", length = 45)
    private String surname;
    @Column(name = "name", length = 45)
    private String name;

    public Users() {
    }

    public Users(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return id;
    }

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

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getIdRole() {
        return idRole;
    }

    public void setIdRole(Integer idRole) {
        this.idRole = idRole;
    }

    public Integer getIdGroup() {
        return idGroup;
    }

    public void setIdGroup(Integer idGroup) {
        this.idGroup = idGroup;
    }

    public Integer getIdSpecialty() {
        return idSpecialty;
    }

    public void setIdSpecialty(Integer idSpecialty) {
        this.idSpecialty = idSpecialty;
    }

    public Integer getIdChair() {
        return idChair;
    }

    public void setIdChair(Integer idChair) {
        this.idChair = idChair;
    }

    public Integer getIdFaculty() {
        return idFaculty;
    }

    public void setIdFaculty(Integer idFaculty) {
        this.idFaculty = idFaculty;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Integer getIdCountry() {
        return idCountry;
    }

    public void setIdCountry(Integer idCountry) {
        this.idCountry = idCountry;
    }

    public Integer getIdCity() {
        return idCity;
    }

    public void setIdCity(Integer idCity) {
        this.idCity = idCity;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getSurname() {
        return surname;
    }

    public void setSurname(String surname) {
        this.surname = surname;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Users)) {
            return false;
        }
        Users other = (Users) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.myapp.entity.Users[ id=" + id + " ]";
    }

}



и еще такой вопрос ... вот тут он сразу сгенерировал запросы, но по сути ведь Entity класс этим не должен заниматься, нужно сделать другой такой же класс UsersDAO и в нем уже описывать все эти запросы? или я не прав?
PM MAIL   Вверх
powerOn
Дата 13.12.2010, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата(4epT @  12.12.2010,  18:29 Найти цитируемый пост)
и проставляет все аннотации. Можете сказать правильно ли он их проставил ?

В целом нормально он их расставил. Синтаксически ошибок нет.

Цитата(4epT @  12.12.2010,  18:29 Найти цитируемый пост)
 вот тут он сразу сгенерировал запросы, но по сути ведь Entity класс этим не должен заниматься, нужно сделать другой такой же класс UsersDAO и в нем уже описывать все эти запросы? или я не прав? 

Вообще говоря, @NamedQuery - это объявление запросов. Все равно понадобится сессия для их выполнения, котороый сущности зачастую не обладают. 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
4epT
Дата 13.12.2010, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



Цитата(powerOn @ 13.12.2010,  09:24)
Вообще говоря, @NamedQuery - это объявление запросов. Все равно понадобится сессия для их выполнения, котороый сущности зачастую не обладают.

Значит логичнее их удалить отсюда и реализовтаь для каждой сущности DAO класс?

Насчет генерации ... да он сгенерировал без синтасических ошибок, но я почему то не увидел не одной анннотации типа: @ManyToMany и др. ... хотя в БД есть множество таких связей
PM MAIL   Вверх
powerOn
Дата 13.12.2010, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата(4epT @  13.12.2010,  10:54 Найти цитируемый пост)
Значит логичнее их удалить отсюда и реализовтаь для каждой сущности DAO класс?

@NamedQuery объявляется над Entity классами - это требование фреймворка.


Цитата(4epT @  13.12.2010,  10:54 Найти цитируемый пост)
Насчет генерации ... да он сгенерировал без синтасических ошибок, но я почему то не увидел не одной анннотации типа: @ManyToMany и др. ... хотя в БД есть множество таких связей 


Возможно он не настолько умен, как хотелось бы. 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
4epT
Дата 13.12.2010, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



Цитата(powerOn @ 13.12.2010,  12:01)
Цитата(4epT @  13.12.2010,  10:54 Найти цитируемый пост)
Значит логичнее их удалить отсюда и реализовтаь для каждой сущности DAO класс?

@NamedQuery объявляется над Entity классами - это требование фреймворка.


Цитата(4epT @  13.12.2010,  10:54 Найти цитируемый пост)
Насчет генерации ... да он сгенерировал без синтасических ошибок, но я почему то не увидел не одной анннотации типа: @ManyToMany и др. ... хотя в БД есть множество таких связей 


Возможно он не настолько умен, как хотелось бы.

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

мм .. а что именно дадут эти анотации (@ManyToMany) ? Что означает эта связь на уровне БД я понимаю, а вот что она даст понять не могу( Стоит ли тепрь эти связи проставлять по сущностям?
PM MAIL   Вверх
powerOn
Дата 13.12.2010, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата(4epT @  13.12.2010,  12:11 Найти цитируемый пост)
 зачем они нужны? их потом можно будет использовать из дао ?

мм .. а что именно дадут эти анотации (@ManyToMany) ? Что означает эта связь на уровне БД я понимаю, а вот что она даст понять не могу( Стоит ли тепрь эти связи проставлять по сущностям? 


Да, потом можно будет из Dao использовать. Больше информации можно найти в доке.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0465 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.