Hibernate
имеет больше возможностей, чем JDBC
. Лучшей особенностью является Hibernate
поддержка Object Oriented Principles
. Вы можете использовать Polymorphism
, Inheritance
, Encapsulation
для своих объектов.
У вас должен быть класс BaseEntity
, и все остальные классы должны проходить из этого класса.
public class BaseEntity {
}
Затем все остальные классы расширяют этот класс. Предположим, что у вас есть еще два класса или сущности.
User.class
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Table(name = "USERS")
@Entity
public class User extends BaseEntity implements Serializable {
@Id
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@Column(name = "SURNAME")
private String surname;
public User() {
}
public User(int id, String name, String surname) {
this.id = id;
this.name = name;
this.surname = surname;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
}
Info.class
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Table(name = "INFO")
@Entity
public class Info extends BaseEntity implements Serializable {
@Column(name = "TEXT")
private String text;
@Id
@Column(name = "ID")
private int id;
public Info() {
}
public Info(String text, int id) {
this.text = text;
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Также вы должны добавить mapping
тег для каждого класса configuration.hbm.xml
Ваш DAO
будет выглядеть так.
public List getList(BaseEntity baseEntity, String[] columnNames) {
Criteria criteria = session.createCriteria(baseEntity.getClass(), "be");
ProjectionList projectionList = Projections.projectionList();
for (String columnName : columnNames) {
projectionList.add(Projections.property("be." + columnName), columnName); // adding column for selection
}
criteria.setProjection(projectionList);
criteria.setResultTransformer(new AliasToBeanResultTransformer(baseEntity.getClass())); // for mapping result to entity
return criteria.list();
}
public static void main(String[] args) {
String[] columnNames = {"name", "surname"}; // columnNames which you want to select
List<Info> users = new GeneralDAO().getList(new User(), columnNames); // you can pass any class User, Info or etc.
}
пожалуйста, попробуйте сами. SO - для решения проблем, а не для введения в новые поля. Возможно, документация - хорошее место для начала. – loki