Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Начнём, пожалуй.
@Entity
@Table(name = "user", schema = "public")
public class User {
private Long userId;
private String name;
private String login;
private String password;
private Integer role;
private List<Task> tasks;
@Id
@SequenceGenerator(name = "user_seq", sequenceName = "user_user_id_seq", allocationSize
= 0)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_seq")
@Column(name = "user_id")
public Long getUserId() {
return userId;
}
@Column(name = "name")
public String getName() {
return name;
}
@Column(name = "login")
public String getLogin() {
return login;
}
@Column(name = "password")
public String getPassword() {
return password;
}
@Entity
@Table(name = "task", schema = "public")
public class Task {
@Column(name = "task_date")
public Date getTaskDate() {
return taskDate;
}
@Column(name = "name")
public String getName() {
return name;
}
@Column(name = "definition")
public String getDefinition() {
return definition;
}
Тогда при
выполнении session.persist(user) или session.merge(user) операции persist или merge будут
применены ко всем объектам из tasks. Аналогично для остальных операций из
перечисления javax.persistence.CascadeType. CascadeType.ALL применяет все операции из
перечисления. Необходимо правильно настроить CascadeType, дабы не подгружать из базы кучу
лишних ассоциированных объектов-сущностей.
@Autowired
private SessionFactory sessionFactory
LazyInitializationException
С параметром FetchType.LAZY нужно быть аккуратнее. Иногда при загрузке ассоциированных
сущностей мы можем поймать исключение LazyInitializationException. В вышеуказанном коде во
время вызова user.getTasks() user должен быть либо в статусе persistent, либо proxy.
Выборка с условиями
А теперь приведём несколько простых примеров выборки данных с условиями. Для этого в
Hibernate используются объекты типа org.hibernate.Criteria:
а).
б).
А здесь мы получаем 50 строк, начиная с 20-го номера в таблице.
@Autowired
private UserDao userDao;
@Autowired
private SessionFactory sessionFactory;
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
@Autowired
private SessionFactory sessionFactory;
@Autowired
private UserDao userDao;