插入数据库的最佳方式?

时间:2012-11-25 20:36:37

标签: java database hibernate design-patterns

我有一个要求,我需要从对象插入数据库,该对象具有关于每个列的表名和值的信息。 您能否就Hibernate实现这一目标的最佳方式提出建议。

Java类

public class InsertDataDetails {
  public String tableName;
  public List ColumnDetails> columnDetails;
}

public class ColumnDetails {
  public String columnName;
  public String columnValue;
}

目前我正在考虑创建一个本机查询并使用Session.execute查询执行它。但是我正在寻找更好的设计,我们可以使用DTO类和休眠功能。

2 个答案:

答案 0 :(得分:1)

虽然你的问题没有提到Spring,但我认为值得提出Spring Data项目。

这为您提供了非常强大的持久性存储库,除了声明接口之外无需任何实现。

例如:

 public interface UserRepository extends JpaRepository<User,Long> {}

User s提供了一个完全正常工作的DAO对象,其方法如下:

List<User> findAll();
User findOne(Long id);
User save(User entity);

然而,为了使用它,你需要遵循@Duffymo的建议,并围绕它们所代表的对象建模你的类,而不是它们的持久性。

答案 1 :(得分:0)

所有这些提案都过于以关系为中心而且过于简单化。我建议你放弃这种做法。

您应该根据您尝试解决的问题考虑对象,而不是持久性。如果要使用Hibernate,它可以将问题的OO表示映射到关系模式。

我还建议您阅读Martin Fowler的Patterns of Enterprise Application Architecture,了解如何通过对象来解决持久性问题。

Google for Data Access Object。这是一个简单的通用的,易于使用Hibernate实现并扩展:

package persistence;

public interface GenericDao<K, V> {
    V find(K id);
    List<V> find();
    K insert(V value);
    void update(V value);
    void delete(V value);
}

对象的持久性已经多次解决,尽可能最好。你提出的建议并不代表对现有技术水平的有意义的改进。