Универсальный Hibernate DAO - PullRequest
2 голосов
/ 22 июля 2011

ценю, если кто-то может помочь в этом.

Мой план состоит в том, чтобы иметь два слоя.Один из них - уровень обслуживания, а второй - уровень DAO.Уровень обслуживания будет выполнять бизнес-логику, а уровень DAO будет выполнять операции с данными CRUD.

Имеют две спящие сущности с именами Person и Order.Эти два объекта реализуют интерфейс BaseEntity.Хотелось бы написать универсальный метод на уровне DAO, чтобы он мог принимать любую сущность.

Любое предложение о том, как написать этот универсальный метод dao?

@Entity
@Table(name = "PERSON")
public class Person implements BaseEntity, java.io.Serializable {

private int id;
private String firstName;

public Person() {
}

@Id
@Column(name = "PERSON_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
public int getId() {
    return id;
}

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

@Column(name = "FIRST_NAME", nullable = false, length = 50)
public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}
}

@Entity
@Table(name = "PURCHASE_ORDER")
public class Order implements BaseEntity java.io.Serializable {

private int id;

public Order() {
}

@Id
@Column(name = "ORDER_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
public int getId() {
    return id;
}

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

@Transient
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
public Set<OrderItem> getOrderItems() {
    return orderItems;
}

public void setOrderItems(Set<OrderItem> orderItems) {
    this.orderItems = orderItems;
}
}

Не могли бы вы посоветовать, как создать универсальный метод, который должен принимать либо сущность Person, либо сущность Order в качестве входного параметра?

Ответы [ 3 ]

6 голосов
0 голосов
/ 22 июля 2011

Вот как бы вы написали общий метод выборки:

 public <T> T get(long id,Class<T> clazz) throws Exception{

            Session session = null;
            T t=null;
            try
            {
                session=getSessionFactory().openSession();
                t= (T) session.get(clazz.getCanonicalName(),id);
            }
            catch(Exception e)
            {
                throw e;
            }
                    finally{
                          if(session!=null) session.close();
                    }
            return t;
        }

Игнорировать обработку исключений. Используйте свою собственную технику обработки исключений.

0 голосов
/ 22 июля 2011

У подкласса Person и Order есть базовый DAO, у метода есть DAO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...